したがって、次の3行があります。
<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/reproducing-a-bug
しかし、それらはすべて私の食欲をそそります。これを回避するスマートな方法を探しています。モデルのプロパティ名を変更したくないし、ルート アイテムの名前も変更したくありません。もし私がそうすると、それは私にとって多くの仕事を意味し、理想的ではありません.
この問題を抱えているのは私だけではありませんか?
(これは MVC 4 です)
ありがとう!