在mvc

时间:2016-06-16 05:07:04

标签: c# asp.net-mvc

创建扩展方法,如下所示:

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.)
}

1 个答案:

答案 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