2016-03-01 4 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, который будет доступен через представления в этой папке, без необходимости иметь @using в каждом представлении.

Однако вам все равно придется добавлять использование для каждого базового класса.

1

Если класс используется на нескольких страницах, добавьте пространство имен для вашего web.config в папке Views:

<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> 
Смежные вопросы