使用Route Id值的ASP.NET MVC 3 Model Id
|
脚本
在控制器中,模型是基于模板创建的,因此View的模型实际上是一个Customization()对象,实际上Id为0,因为它是新的. 在视图中我渲染@ Html.HiddenFor(m => m.Id)并且隐藏输入的结果值是10,尽管它应该是0,因为m是Customization类型.我之前使用MVC 2遇到过这种情况,并且通过不使用辅助方法解决了这个问题. 问题 >是否有注释或其他东西 附加代码澄清 视图 @model Project.Core.Domain.Customization
@using( Html.BeginForm( "save","customization" ) )
{
@Html.HiddenFor( m => m.Id )
@Html.HiddenFor( m => m.Template.Id )
<button type="submit" id="save" name="save">Save</button>
}
调节器 public ActionResult Customize( int id )
{
var template = Persistence.Data.RetrieveObject<Template>( id );
var model = new Customization();
ViewBag.Template = template;
return ( View( model ) );
}
解 将Action的签名更改为: public ActionResult Customize( int TemplateId ){ ... }
将链接更改为操作: @Html.ActionLink( "customize","customize",new { TemplateId = template.Id } )
我最终得到了一个看起来像的网址 /template/customize?TemplateId=10 这很丑陋,但是我可以用模型来保持我的观点清洁.所以这对我来说是一场胜利. 解决方法我认为这是因为当你使用像@ Html.HiddenFor(m => m.Id)这样的东西时,html助手会在各个地方查看以填充输入的值,并且路径中的值就是其中一个位置.因此,您可以更改路线,使其类似于模板/自定义/ {TemplateId},然后让您的操作方法反映出来,例如: public ActionResult Customize(int templateId). 或者您可以更改具有CustomizationId属性而不仅仅是Id的viewmodel(或创建自定义视图模型). 不,它不是一个错误…它更像是一个可以带来无法预料的后果的功能.但是一旦你意识到它,它就像一种享受. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 请求验证 – ASP.NET MVC 2
- ASP.NET会话超时测试
- asp.net-web-api – 如何只获取没有值的Odata.Count
- asp.net-mvc – 处理onchange事件在HTML.DropDownList Razo
- asp.net – Visual Studio 2008 – 解决方案的条件编译符号
- ASP.NET MVC伪本地化
- asp.net-mvc – 使用NLog记录未处理的异常? ELMAH和NLog应
- asp.net – 组合两个List(Of String)最有效的方法是什么?
- 如何在Asp.NET MVC中干净地重用编辑/新视图
- 从ASP.NET 3.5应用程序在IFRAME中运行GWT应用程序(包括Appl
- asp.net – IIS URL重写:强制规范主机名和HTTP到
- asp.net-mvc – 为id而不是name设置HtmlFieldPre
- .net – SqlConnection的Dispose方法是否会干扰连
- asp.net – MVC 3 htmlhelper的扩展方法来包装内
- 如何从ASP.NET MVC中的自定义帮助程序中访问当前
- asp.net-mvc – Asp.net Identity:User.Identit
- ASP.NET Cookies BUG – 多个cookie随机复制?
- asp.net – 将appsettings.production.json发布到
- asp.net-mvc – mvc视图中的动态类型
- asp.net – 如何在单击“提交”按钮后显示requir
