基于用户角色批量禁用复选框 - MVC Razor

Bulk disable checkboxes based on User Role - MVC Razor

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

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

我知道我可以做这样的事情,但是页面上有大约 100 个复选框,重复所有添加了 disabled 属性的代码行似乎令人讨厌。有没有更好的办法?我也不反对使用一些 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>
}

试试这个

<script type="text/javascript">
    function Uncheckall() {

        $('table input[type=checkbox]').attr('disabled', 'true');
    }
</script>

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

object attributes = null;

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

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

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

当角色为 stuff 时它将禁用复选框,否则它将保持启用状态。