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
IDthat 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.