【问题标题】:Bulk disable checkboxes based on User Role - MVC Razor基于用户角色批量禁用复选框 - MVC Razor
【发布时间】:2018-10-02 13:35:29
【问题描述】:

我在 MVC 应用程序中定义了用户角色。本质上,我想要的是这样的:

if (User.IsInRole = ("staff"))
   {
      // disable all checkboxes
   }

我知道我可以做这样的事情,但是页面上大约有 100 个复选框,重复添加禁用属性的所有代码行似乎令人讨厌。有没有更好的办法?我也不反对使用一些 jQuery 来实现这一点:

if (User.IsInRole = ("staff"))
{
   <tr>
     <td>Centroid</td>
     <td><input type="checkbox" name="Staff" checked disabled /></td>
     <td>@Html.CheckBoxFor(m => m.NBTC_FA_Centroid, new {@disabled = "disabled")</td>
     <td>@Html.CheckBoxFor(m => m.Contract_FA_Centroid, new {@disabled = "disabled")</td>
     <td>@Html.CheckBoxFor(m => m.Coord_FA_Centroid, new {@disabled = "disabled")</td>
     <td>@Html.CheckBoxFor(m => m.NGO_FA_Centroid, new {@disabled = "disabled")</td>
     <td>@Html.CheckBoxFor(m => m.Public_FA_Centroid, new {@disabled = "disabled")</td>
   </tr>
}
else
{
   <tr>
        <td>Centroid</td>
        <td><input type="checkbox" name="Staff" checked disabled /></td>
        <td>@Html.CheckBoxFor(m => m.NBTC_FA_Centroid)</td>
        <td>@Html.CheckBoxFor(m => m.Contract_FA_Centroid)</td>
        <td>@Html.CheckBoxFor(m => m.Coord_FA_Centroid)</td>
        <td>@Html.CheckBoxFor(m => m.NGO_FA_Centroid)</td>
        <td>@Html.CheckBoxFor(m => m.Public_FA_Centroid)</td>
   </tr>
}

【问题讨论】:

    标签: c# asp.net-mvc razor html-helper


    【解决方案1】:

    您可以检查您的模型并将object设置为禁用作为html助手的属性。

    object attributes = null;
    
    if (User.IsInRole = ("staff"))
    {
        attributes = new { disabled = "disabled" };
    }
    

    然后像这样将它用于你的助手

     @Html.CheckBoxFor(model => model.Status, attributes)
    

    当角色是东西时它将禁用复选框,否则它将保持启用。

    【讨论】:

    • 您介意解释model.Status 的用法吗(或指向我一些文档)?我不确定你所说的“检查你的模型”是什么意思——你的意思是检查模型状态吗?
    • 这是我的财产名称。你应该使用你的。例如:@Html.CheckBoxFor(m =&gt; m.NBTC_FA_Centroid, attributes) 等等@MKF
    • 基本上,正如您提到的,100 个复选框的 if else 子句是多余的。 @MKF
    • 啊,我明白了。我认为Status 很特别。谢谢!
    • 在这种情况下,我准备了 Jquery 解决方案。见link@JosephDoggie
    【解决方案2】:

    试试这个

    <script type="text/javascript">
        function Uncheckall() {
    
            $('table input[type=checkbox]').attr('disabled', 'true');
        }
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      相关资源
      最近更新 更多