创建扩展方法,如下所示:
public static class RBAC_ExtendedMethods
{
public static bool IsSysAdmin(this ControllerBase controller)
{
bool IsSysAdmin = false;
try
{
//Check if the requesting user has the System Administrator privilege...
IsSysAdmin = new RBACUser(System.Security.Principal.WindowsIdentity.GetCurrent().Name).IsSysAdmin;
}
catch { }
return IsSysAdmin;
}
}
能够在控制器操作方法中使用此方法:
public ActionResult Index()
{
if (this.IsSysAdmin())
{
}
}
但在视图中使用时无法使用ViewContext查看:
@{
if(ViewContext.Controller.)
}
答案 0 :(得分:0)
我可以告诉您正确使用扩展方法,并且它们应该在Razor
视图中,但是如果您在View
本身中包含扩展方法,我们无法看到。< / p>
有多种方法可以包含Controller Extension方法。扩展方法命名空间必须是视图的using
语句的一部分,如下所示。
请注意,由于您没有提供命名空间,我将使用MyCoolNamespace.ExtensionMethods
作为扩展方法的命名空间
Razor查看
在视图中添加using语句。
@using MyCoolNamespace.ExtensionMethods
<强>的Web.config 强>
位于web.config
的{{1}}内,在~/Views/web.config
部分添加名称空间,例如。
system.web.webPages.razor/pages/namespaces
这两种方法中的任何一种都会在您的视图中启用扩展方法。后面的选项为从 <system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<!-- ommited -->
<add namespace="MyCoolNamespace.ExtensionMethods" />
</namespaces>
</pages>
</system.web.webPages.razor>
路径继承的所有视图启用它。
web.config