在View中禁用复选框

时间:2012-05-22 18:57:28

标签: c# asp.net .net asp.net-mvc asp.net-mvc-3

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

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

2 个答案:

答案 0 :(得分:3)

即使你设置了disabled="",它仍然被归类为被禁用,因为该元素仍然具有disabled属性。如果不使用JavaScript / JQuery,您必须在View中执行if语句。

忍受我,因为我习惯使用Razor语法,但它应该是这样的:

<%if (model.CanModifyList) { %>
<%= Html.CheckBoxFor(c => c.HasList)%> 
<% } else { %>
<%= Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })%>
<% } %>

如果您创建了自己的HTML Helper(可能是CheckBoxFor的重载)并返回了依赖于model属性的正确HTML,那么更好的是,这样可以节省您在视图中执行其他逻辑: )

答案 1 :(得分:0)

@mattytommo的代码可以改写为

@{
    if (model.CanModifyList) 
    { 
        @Html.CheckBoxFor(c => c.HasList)%> 
    } 
    else 
    { 
        @Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })
    }
}