我正在尝试使用模型属性禁用视图中的复选框。但是,在这两种情况下,复选框都被禁用。我不应该在下面的代码中使用“”吗?
<%= Html.CheckBoxFor(c => c.HasList, new { disabled = (Model.CanModifyList) ? "" : "disabled" })%>
我正在尝试使用模型属性禁用视图中的复选框。但是,在这两种情况下,复选框都被禁用。我不应该在下面的代码中使用“”吗?
<%= Html.CheckBoxFor(c => c.HasList, new { disabled = (Model.CanModifyList) ? "" : "disabled" })%>
即使您已设置disabled=""
它仍然被归类为被禁用,因为该元素仍将具有该disabled
属性。如果不使用 JavaScript/JQuery,您必须在视图中执行 if 语句。
忍受我,因为我习惯了 Razor 语法,但它应该是这样的:
<%if (model.CanModifyList) { %>
<%= Html.CheckBoxFor(c => c.HasList)%>
<% } else { %>
<%= Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })%>
<% } %>
更好的是,如果您创建自己的 HTML 帮助器(可能是 的重载CheckBoxFor
),它根据模型属性返回正确的 HTML,这样可以节省您在视图中执行额外的逻辑 :)
@mattytommo 的代码可以重写为
@{
if (model.CanModifyList)
{
@Html.CheckBoxFor(c => c.HasList)%>
}
else
{
@Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })
}
}