在.net核心中启用禁用控件

时间:2016-10-17 13:07:39

标签: asp.net-core asp.net-core-mvc tag-helpers

最近,我开始处理show / hide,根据登录用户角色及其分配的权限启用/禁用控件。虽然浏览网络的人已经提供了创建自定义html帮助程序以及最新引入的标记帮助程序。

所以,我的问题是我可以使用TagHelpers显示/隐藏,启用/禁用控件吗?或者我只需要编写html帮助程序。

现在我使用传统方法

按如下方式实现了它
@if (!permissions.CheckPermission("course.coursedetails.mytextbox.visible"))
{
  <section class="col col-5">
  <label class="label">@objLocalizer["Title"]</label>

  <label class="input">
  <i class="icon-append fa fa-tag"></i>
  @Html.TextBoxFor(model => model.CourseLang.CourseTitle, permissions.CheckPermission  ("course.coursedetails.mytextbox.enabled") ? (object)new { @disabled = "disabled", @class = "form-control", @id =   "mytextbox" } : new { @class = "form-control", @id = "mytextbox" })

  <span asp-validation-for="CourseLang.CourseTitle"  class="text-danger"></span>
  </label>
  </section>

}

如您所见,我已在@Html.TextBoxFor中检查了所需的权限, 但是,此逻辑不适用于select, label等所有类型的控件。

那么,我如何通过使用标记helper / html帮助器来创建一个通用的方法/类来实现这个目的呢?

1 个答案:

答案 0 :(得分:1)

如果您使用内置授权部分,则可以使用IAuthorizationService执行此操作。

首先,您需要换掉任何权限.CheckPermissions(),然后返回内置于asp.net核心的4.2。假设您需要的不仅仅是简单的声明检查,那么您可以使用claims based authorization来表达您的规则,然后最后检查这些策略code policies and requirements,将您希望停止渲染的控件包裹起来。< / p>

不要忘记您需要复制控制器代码中的检查,因为否则可以使用浏览器中的开发人员工具来添加控件,无论您首先渲染什么。