在我的 _Layout.cshtml
中,如果用户的角色是 UserType1
,我有以下代码将不会显示按钮
@if (!(HttpContext.Current.User.IsInRole("UserType1")))
{
<li><a href="../St/Index">Static</a> </li>
<li><a href="../St/Clients">Clients</a> </li>
}
我想知道是否有更好的或最佳实践方法来执行此操作。请注意,我将此代码放入我的 _Layout.cshtml
文件中。
最佳答案
这看起来不错。有些人(比如我)可能更愿意更进一步,并将此检查包装在自定义 HTML 帮助器中,以便能够对条件进行单元测试:
@if (Html.ShouldShowButtons())
{
<li><a href="../St/Index">Static</a> </li>
<li><a href="../St/Clients">Clients</a> </li>
}
以及助手的实现:
public static class HtmlExtensions
{
public static bool ShouldShowButtons(this HtmlHelper html)
{
return html.ViewContext.HttpContext.User.IsInRole("UserType1");
}
}
作为替代方案,您可以使用子操作实现更复杂的逻辑:
@{Html.RenderAction("MenuButtons", "Menu");}
然后您将有一个相应的 Controller 操作,该操作检查用户是否处于所需角色并使用标记呈现局部 View 。
关于c# MVC 有条件地隐藏标题按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328092/