所以我有这三行:
<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>
我已经确定浅绿色值不是我的 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
- http://www.hanselman.com/blog/TheWeeklySourceCode38ASPNETMVCBetaObscurityModelStateIsValidIsFalseBecauseModelBinderPullsValuesFromRouteData.aspx
- http://ayende.com/blog/3683/reproduce-a-bug
但它们都让我胃口大开。我正在寻找一种聪明的方法来解决这个问题,我不想更改模型的属性名称,也不想更改路由项的名称。如果我这样做,这对我来说将代表很多工作,而且并不理想。
我确定我不是唯一一个有这个问题的人?
(这是 MVC 4)
谢谢!