所以我有这三行:
<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>
Run Code Online (Sandbox Code Playgroud)
我已经确定lightgreen值不是我的Model.Id,而是我的路由设置的Id:
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "MyFunController", action = "Index", id = UrlParameter.Optional });
Run Code Online (Sandbox Code Playgroud)
我在这里得到了一些解释:
但他们都让我胃口大开.我正在寻找一种解决此问题的聪明方法,我不想更改模型的属性名称,也不想更改路径项的名称.如果我这样做将代表我的很多工作,并不理想.
我确定我不是唯一一个有这个问题的人吗?
(这是MVC 4)
谢谢!
您可以从ModelState呈现视图的控制器操作中删除(在Html帮助程序从中获取它的位置)中的有问题的值:
public ActionResult SomeAction(int id)
{
ModelState.Remove("Id");
MyViewModel model = ...
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
现在它Id是你的视图模型的属性,它将被TextBox使用,而不是来自路径的那个.
显然,这只是一个丑陋可怕的解决方法.当然,正确的方法是正确定义视图模型,这样就不会出现这种命名冲突.
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |