【问题标题】:Disable checkbox in View在视图中禁用复选框
【发布时间】:2012-05-29 07:31:57
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    @mattytommo 的代码可以改写为

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的。我试图看看是否可以使用条件运算符而不使用 if/else。
      • @dotNetNewbie 是的,唯一的方法就是使用 Html Helper :)
      猜你喜欢
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      相关资源
      最近更新 更多