行为不端的Asp.net MVC助手方法(即:Html.TextBox()和Html.Hidden())

时间:2011-12-22 20:29:00

标签: asp.net-mvc

我一直试图调试一个问题而且我把它指向了这个场景:

当语句Html.TextBox(" ID","哎呀...")被执行时,我希望它呈现:

<input id="ID" name="ID" type="text" value="What the heck.." />

但我得到一个Guid作为TextBox值,如:

<input id="ID" name="ID" type="text" value="2e369d2c-071d-4733-8382-cc9e77d0b912" />

为什么Asp.net MVC输出Guids?我没有重写asp.net mvc的框架方法。请参阅屏幕截图。

Screenshot

更新 这是使用Html.Hidden()而不是Html.TextBox()的另一个屏幕截图。我无法直接在Watch窗口中使用Html.HiddenFor(),因为HiddenFor()使用lambdas。

enter image description here

@Eric Petroelje和@TLS:你们两个是对的。 TextBox()和Hidden()从POST变量中检索ID值,而不是从当前Model或函数的value参数中检索ID值。虽然,我预计与HiddenFor()和TextBoxFor()有所不同。我希望它只能从当前模型中获取它从POST&#ed变量中获取它的值。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

也许您有一个名为ID的POST变量GUID?如果是这种情况,HTML Helper方法将使用该POST值。如果没有POST值,它将回退到模型中的值。

答案 1 :(得分:1)

您是正确的,Html.TextBox("ID", "What the heck..")应该输出您在第一个示例中提供的属性值;但是,如果您使用Html.TextboxFor方法,那么您正在使用MVC Helper来动态加载ID属性的并将其放入{{1 HTML中的属性。当您使用value方法时,如果您的Html.TextboxFor属性是Guid,则第二个示例是预期的HTML输出。