我有以下HTML帮助文本框:
@Html.TextBoxFor(m => m.Email, Model.Active ? new { @readonly = "readonly", @style = "background:#E8E8E8" } : new Object { })
当我更改操作中的电子邮件值时(在返回的模型中)然后设置active=true
(也在模型中)以使其只读,电子邮件文本框值不会使用新值更新来自模型,我检查确认模型将返回新电子邮件并且active = 1。
就像在渲染模型的值之前设置readonly一样。
感谢任何帮助,谢谢你
答案 0 :(得分:0)
当您回发模型时,其值将添加到ModelState
。 Html助手绑定到ModelState
中的值,而不是模型属性的值,因此修改POST方法中的模型属性的值将不会反映在视图中,除非您在设置值之前首先清除模型状态使用
ModelState.Clear(); // clears all properties
或
if (ModelState.ContainsKey("active"))
{
ModelState["active"].Errors.Clear(); //clears the property 'active'
}
this answer的第二部分解释了这种行为的原因。
但是,应谨慎使用ModelState
,因为它也会清除验证错误,并且无论如何正确的方法是遵循PRG模式