9

我对 asp.net mvc 2 和 html.textboxfor 助手有疑问。我以一种形式使用以下代码:

<%= Html.TextBoxFor(model => model.Zip, new { @class = "txt", id = "zip", tabindex = 1 })%>

当用户发送表单时,我验证邮政编码,当邮政编码无效时,我们设置更正的邮政编码。我的模型有更正的 zip,从 asp 生成的 html 代码包含旧的 zip 值。

示例:用户编写 zip:12345 我的验证类,将 zip 更正为:12346 我的模型包含新的 zip:123456,在 gui 上我只看到 12345

问题是什么?

4

2 回答 2

8

您无法修改控制器操作中的值,因为帮助器在生成文本框时将始终使用 POST 值。这是设计使然,如果您想解决它,您将不得不编写自己的帮助程序或手动生成文本框:

<input 
    type="text" 
    name="Zip" 
    value="<%= Html.Encode(Model.Zip) %>" 
    class="txt" 
    id="zip" 
    tabindex="1" 
/>
于 2010-04-06T14:22:49.367 回答
2

使用 ModelState.Clear() 清除模型状态,更新您的对象,然后返回它。

于 2012-02-10T16:52:26.037 回答