【发布时间】:2015-04-24 17:41:10
【问题描述】:
我有以下 HTML 帮助文本框:
@Html.TextBoxFor(m => m.Email, Model.Active ? new { @readonly = "readonly", @style = "background:#E8E8E8" } : new Object { })
当我更改操作中的电子邮件值(在返回的模型中)然后将active=true(也在模型中)设置为只读时,电子邮件文本框值不会使用来自的新值更新模型,我检查以确认模型将返回新电子邮件并且 active=1。
就好像在渲染模型的值之前设置了只读。
感谢您的帮助,谢谢
【问题讨论】:
-
您能否解释一下下面的句子:“当我在控制器中更改电子邮件值然后设置 active=true 使其只读时,新的电子邮件文本值不会更新。” ?您还可以为我们提供操作实施吗?
-
在操作中对不起不是控制器,在操作中我检查用户是否处于活动状态,如果他是我忽略电子邮件更新并在模型中发回旧电子邮件和活动 =是的,我预计会用旧电子邮件更新邮箱(基本上忽略用户输入的内容)并使其只读。但是,如果用户仍然不活跃,我允许进行电子邮件更新,并且电子邮件框仍然是可编辑的。
-
Html 助手使用模型状态值来绑定(不是模型值)。您不能只更改模型值并期望它更新(您需要在返回视图之前清除模型状态)但无论如何这是错误的方法 - 您应该遵循 PRG 模式。对于这种行为的解释,refer this answer
-
谢谢,我会研究一下你所说的这个 PRG 模式
-
是的,我做错了,您的建议是正确的,如果您想将其作为答案而不是评论,请将其作为答案。
标签: asp.net-mvc html-helper readonly html.textboxfor