我有一个文本框,我定义为
<%= Html.TextBox("Username",Model.Form.Username,new { @class = "textBox",@disabled = "disabled" })%>
在我的行动
[AcceptVerbs(HttpVerbs.Post)] [ValidateAntiForgeryToken] public ActionResult EditLogin(LoginForm post) { ... return View(model); }
post.Username将为空,所有其他属性正确绑定,但如果我更改@ disabled =“禁用到@ readonly =”只读“用户名正确绑定,一切正常。
看起来模型绑定忽略禁用字段中的值。他们有办法解决这个问题吗?我仍然需要字段的值绑定到模型。我可以使用readonly,但更喜欢使用disabled,所以它是直观的显示给用户,他们不能编辑字段的值。
解决方法
我相信一个被禁用的表单字段不会提交任何内容。如果你有一个窗体并禁用该窗体中的foo字段,当你发布的帖子不会有foo字段的值。这只是在HTML中禁用字段的本质,而不是MVC问题。