TextBoxFor - 显示错误的值

jzm*_*jzm 6 c# razor asp.net-mvc-3

好的,我在这里有一个奇怪的.我知道值正确地传递给属性,因为这工作正常:

@Html.TextBox("Foo", Model.Foo, new { @class = "bar" })
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做:

@Html.TextBoxFor(m => m.Foo, new { @class = "bar" })
Run Code Online (Sandbox Code Playgroud)

它显示的值不正确.我完全不知道这个价值来自哪里.对于某些页面,它显示应该是的小写版本,有时则显示旁边的文本框的值.我很困惑.它是唯一能够做到这一点的文本框.我还在页面上有一个剃刀助手,它使用这个确切的值来显示页面的标题,并且显示正确.

我不介意使用@Html.TextBox()这个特别的,但我想深究这一点.

其他任何人都有这样的随机发生吗?我在这个特定的页面上有很多控件,这是唯一一个这样的控件.

jzm*_*jzm 10

哦,jeez ......我刚刚找到了罪魁祸首.这是url路由值!大声笑

在我的全局文件,我有{something}/{whatever}/{id}/{foo},{foo}是有一个可选的参数只是为了让页面的URL看起来对人友好的.

有趣的是,TextBoxFor中使用的表达式是从URL而不是viewmodel中提取的.我本以为它会在转到URL之前读取模型吗?甚至intellisense也从模型中拉出来.这是某种错误吗?

自我注意:始终确保属性具有不同的名称!

希望这种体验能够帮助他人.