有条件地在ASP.NET MVC 5中呈现内容

时间:2018-10-19 15:01:17

标签: asp.net asp.net-mvc

我正在寻找ASP.NET MVC 5中的Reacts高阶组件。

因此,我拥有大量控件,应根据安全特权有条件地呈现这些控件。如果用户具有特定的特权,那么他们应该看到该控件。如果没有,则该控件被隐藏。

如果我在viewModel中执行此操作,则需要使用Security Privileges检查来污染我的视图模型构建器,因此我希望通过某种控件来做到这一点。

我希望有这样的东西:

@Html.PermissionCheck(new Privilege[ SecurityPrivilege.CanEdit ]) {
    <input type="button" value="Edit" />
}

通过这种方式,我的权限检查代码全部放在一个地方,并且我可以访问用户对象,而无需将其传递给我的所有模型构建器。

我看过各种控制示例,包括:ASP.NET MVC Html Helper

上述问题是将我的控件包装在标准环绕声中似乎很棒。有条件地渲染它的情况就更少了。

不确定如何获取部分视图以接受一组内容。

1 个答案:

答案 0 :(得分:2)

HtmlHelper扩展名仍然可以为您服务:

public static class HtmlHelperExtensions
{
    public static bool PermissionCheck(this HtmlHelper helper, Privilege[] privs)
    {
       ...
       return true/false;
    }
}

然后在您看来:

@if(Html.PermissionCheck(new Privilege[ SecurityPrivilege.CanEdit ]))
{
    <input type="button" value="Edit" />
}

有条件地基于Razor引擎提供的@if()语法进行渲染。

链接的示例过于复杂。这用于需要包装的内容。您所寻找的只是返回一个简单的bool