c# mvc有条件地隐藏标题按钮
本文关键字:标题 按钮 隐藏 mvc 有条件 | 更新日期: 2023-09-27 17:53:34
在我的_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");}
然后,您将有一个相应的控制器操作,该操作检查用户是否处于所需的角色中,并呈现带有标记的部分视图。