mod*_*bie 40 asp.net asp.net-mvc model-binding
我有一个我定义为的文本框
<%= Html.TextBox("Username", Model.Form.Username,
new { @class = "textbox", @disabled = "disabled" })%>
Run Code Online (Sandbox Code Playgroud)
在我的行动中
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult EditLogin(LoginForm post) {
...
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
post.Username将为空,所有其他属性绑定正确,但如果我将@disable ="disabled更改为@ readonly ="readonly"用户名绑定正确且一切正常.
看起来模型绑定忽略禁用字段中的值.他们是这样的吗?我仍然需要字段的值来绑定到模型.我可以使用readonly但更喜欢使用disabled,因此用户在视觉上可以看出他们无法编辑字段的值.
Joh*_*ock 60
我相信禁用的表单字段不会提交任何内容.如果你有一个表单并禁用该表单中的foo字段,当你发布帖子时将没有foo字段的值.这只是在HTML中禁用字段的本质,而不是MVC问题.
小智 51
使用readonly- 将禁用输入,但你仍然会在绑定中使用它.你可以在div上应用一个样式,使它看起来像灰色吗?
<div class="editor-label">
@Html.LabelFor(model => model.FileName)
</div>
<div class="editor-field-greyed-out">
@Html.TextBoxFor(model => model.FileName, new { @readonly = true })
@Html.ValidationMessageFor(model => model.FileName)
</div>
Run Code Online (Sandbox Code Playgroud)
您可以通过添加具有相同值的隐藏字段来解决此问题;)
<%= Html.Hidden("Username", Model.Form.Username)%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37861 次 |
| 最近记录: |