当前位置: 动力学知识库 > 问答 > 编程问答 >

Misbehaving Asp.net MVC helper methods (ie: Html.TextBox() and Html.Hidden())

问题描述:

I've been trying to debug an issue and I pinned pointed it down to this scenario:

When the statement Html.TextBox("ID", "What the heck..") is executed, I expect it to render:

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

But I get a Guid as its TextBox value such as so:

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

Why is Asp.net MVC outputting Guids? I'm not overriding asp.net mvc's framework methods. Please refer to the screenshot.

Update:

Here's another screenshot using Html.Hidden() instead of Html.TextBox(). I couldn't use Html.HiddenFor() directly into the Watch window because HiddenFor() uses lambdas.

@Eric Petroelje and @TLS: You two are correct. TextBox() and Hidden() is retrieving ID's value from the POST variables and not from the current Model or the function's value parameter. Though, I've expected different from HiddenFor() and TextBoxFor(). I expected it to get its value from the POST'ed variables only if it cant get it from the current Model. How can I achieve this?

网友答案:

Maybe you have a POST variable named ID that is a GUID? If that's the case, the HTML Helper method will use that POST value. If no POST value is present, it will fall back to the value in the model.

网友答案:

You are correct that Html.TextBox("ID", "What the heck..") is expected to output the attribute values that you give in your first example; however, if you are using the Html.TextboxFor method, then you're using a MVC Helper that dynamically loads the value of the ID property and places that into the value attribute in the HTML. When you use the Html.TextboxFor method, your second example is the expected HTML output if your ID property is a Guid.

分享给朋友:
您可能感兴趣的文章:
随机阅读: