2016-03-01 125 views
0

我在我的控制器文件夹中创建了一个名为Utils的类。但是无法找到并访问其静态方法。以下是声明:无论你想用它ASP.NET MVC:无法访问静态方法

using ProjectManager.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Security.Principal; 
using System.Web; 
using Microsoft.AspNet.Identity; 
using System.Web.Security; 

     namespace ProjectManager.Controllers 
     { 
      public static class Utils 
      { 
       public static bool isInRole(IPrincipal User, string roleName, ApplicationDbContext dbContext) 
       { 
        try 
        { 
         var currentUser = (from user in dbContext.Users 
              where user.Id == User.Identity.GetUserId() 
              select user).First(); 
         RolePrincipal r = (RolePrincipal)User; 
         string[] rolesArray = r.GetRoles(); 
         if (rolesArray.Contains(roleName)) 
          return true; 
        } 
        catch (Exception ex) 
        { 
         return false; 
        } 
        return false; 
       } 
      } 
     } 
+3

您是否尝试过使用引用完全合格的名字'ProjectManager.Controllers.Utils.isInRole方法'? –

+1

这将有助于了解您尝试访问此方法的方式/方式。方法声明看起来是正确的,所以你的问题很可能是缺少引用或隐藏你的静态类的类似名称空间之一。 –

回答

1

,VSB,你将需要添加:

using ProjectManager.Controllers; 

到类的顶部,或:

@using ProjectManager.Models 

在你的剃刀视图中。

编辑:正如@Martin Staufcik非常好地指出的那样,它可以添加到您的View文件夹的web.config的命名空间部分,以便可以在该文件夹中的Views中访问,而不必在每个视图中都有@using。

尽管如此,您仍然需要为每个后端类添加使用。

1

如果类是用于在多个页面,命名空间添加到您的web.config中浏览文件夹:

<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> 
     <add namespace="ProjectManager.Controllers" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor>