我有一个asp.net mvc 2和html.textboxfor帮助器的问题。 我在表单中使用以下代码:
<%= Html.TextBoxFor(model => model.Zip, new { @class = "txt", id = "zip", tabindex = 1 })%>
当用户发送表单时,我验证了zipcode,当zip无效时我们设置了更正后的zip。 我的模型有更正的zip,asp生成的html代码包含旧的zip值。
样品: 用户写邮编:12345 我的验证课,修正了以下邮编:12346 我的模型包含新的zip:123456,在gui上我只看到12345
问题是什么?
答案 0 :(得分:7)
您无法修改控制器操作中的值,因为生成文本框时帮助程序将始终使用POSTed值。这是设计使然,如果你想解决它,你将不得不编写自己的助手或手动生成文本框:
<input
type="text"
name="Zip"
value="<%= Html.Encode(Model.Zip) %>"
class="txt"
id="zip"
tabindex="1"
/>
答案 1 :(得分:2)
使用ModelState.Clear()清除模型状态,更新对象然后返回它。