【问题标题】:Conditionally render something in ASP.NET MVC 5有条件地在 ASP.NET MVC 5 中渲染某些东西
【发布时间】:2018-10-19 15:01:17
【问题描述】:

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

所以我有很多控件,它们应该根据安全权限有条件地呈现。如果用户具有特定权限,那么他们应该看到该控件。如果不是,则控件被隐藏。

如果我在 viewModel 中执行此操作,我需要使用安全权限检查来污染我的视图模型构建器,因此我希望在某种控制下执行此操作。

我希望得到类似的东西:

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

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

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

上面的问题是它似乎很适合将我的控件包裹在标准环绕中。在有条件地渲染它时就更少了。

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

【问题讨论】:

  • 我认为我的回答没有用?

标签: asp.net asp.net-mvc


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2013-10-11
    • 2011-03-21
    • 2013-03-10
    • 2012-06-04
    • 2011-08-16
    相关资源
    最近更新 更多