我有一个我定义为的文本框
<%= 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,因此用户在视觉上可以看出他们无法编辑字段的值.
我有一个强类型的MVC视图控件,它负责用户可以创建和编辑客户端项目的UI.我希望他们能够定义ClientId创建,但不能编辑,这将在UI中反映出来.
为此,我有以下几行:
<%= Html.TextBox("Client.ClientId", ViewData.Model.ClientId, new
{ @readonly =
(ViewData.Model.ClientId != null && ViewData.Model.ClientId.Length > 0
? "readonly" : "false")
} )
%>
Run Code Online (Sandbox Code Playgroud)
似乎无论我给readonly属性(甚至"false"和"")赋予什么值,Firefox和IE7都使输入成为只读,这是令人讨厌的反直觉.如果不需要,是否有一个很好的,基于三元运算符的方法来完全删除属性?