3

我正在尝试使用模型属性禁用视图中的复选框。但是,在这两种情况下,复选框都被禁用。我不应该在下面的代码中使用“”吗?

<%= Html.CheckBoxFor(c => c.HasList, new { disabled = (Model.CanModifyList) ? "" : "disabled" })%>
4

2 回答 2

3

即使您已设置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,这样可以节省您在视图中执行额外的逻辑 :)

于 2012-05-22T19:03:46.363 回答
0

@mattytommo 的代码可以重写为

@{
    if (model.CanModifyList) 
    { 
        @Html.CheckBoxFor(c => c.HasList)%> 
    } 
    else 
    { 
        @Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })
    }
}
于 2016-05-05T01:41:02.747 回答