asp.net-mvc-3 – 为什么我的textBoxFor使用我的路由数据?
所以我有这三行:
<div style="background-color: lightgreen;">@Html.TextBoxFor(m => m.Id)</div> <div style="background-color: green;">@Html.DisplayTextFor(m => m.Id)</div> <div style="background-color: pink;">@Model.Id</div> 我已经确定lightgreen值不是我的Model.Id,而是我的路由设置的Id: routes.MapRoute("Default","{controller}/{action}/{id}",new { controller = "MyFunController",action = "Index",id = UrlParameter.Optional }); 我在这里得到了一些解释: > http://forums.asp.net/t/1792086.aspx/1 但他们都让我胃口大开.我正在寻找一种解决此问题的聪明方法,我不想更改模型的属性名称,也不想更改路径项的名称.如果我这样做将代表我的很多工作,并不理想. 我确定我不是唯一一个有这个问题的人吗? (这是MVC 4) 谢谢! 解决方法
您可以在呈现视图的控制器操作中从ModelState(这是Html帮助程序从中获取它)中删除有问题的值:
public ActionResult SomeAction(int id) { ModelState.Remove("Id"); MyViewModel model = ... return View(model); } 现在它是你的视图模型的Id属性,它将被TextBox使用而不是来自路径的那个. 显然,这只是一个丑陋可怕的解决方法.当然,正确的方法是正确定义视图模型,这样就不会出现这种命名冲突. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用Ajax.BeginForm绑定HttpPostedFileBase
- asp.net-mvc-3 – 在ASP.NET MVC3中的自定义授权属性中使用
- 何时在ASP.NET上选择LAMP?
- asp.net – MVC2 – 使用RDF和命名空间使用RSS源http://www
- asp.net-mvc-3 – 在剃刀中使用@variable后有一个更简洁的逗
- 如何在服务器端缓存ASP.NET自定义HttpHandler响应
- asp.net-mvc-4 – MVC4捆绑GZIP和头文件
- asp.net-mvc – 在Azure中启用自定义错误
- asp.net – System.Runtime.InteropServices.COMException功
- asp.net-mvc-4 – 如何将自定义css / js添加到MVC4项目进行