【问题标题】:ASP.NET MVC: Cannot access static Method [closed]ASP.NET MVC:无法访问静态方法 [关闭]
【发布时间】:2016-03-01 21:05:07
【问题描述】:

我在我的控制器文件夹中创建了一个名为Utils 的类。但是,无法找到和访问其静态方法。这是声明:

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;
                }
            }
        }

【问题讨论】:

  • 您是否尝试过使用完全限定名称ProjectManager.Controllers.Utils.isInRole 引用方法?
  • 了解您在何处/如何尝试访问此方法会很有帮助。方法声明看起来正确,因此您的问题很可能是缺少引用或隐藏您的静态类的类似命名空间之一。

标签: c# asp.net asp.net-mvc static-methods


【解决方案1】:

如果该类在多个页面上使用,请将命名空间添加到 Views 文件夹中的 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>

【讨论】:

    【解决方案2】:

    无论你想在哪里使用它,VSB,你都需要添加:

    using ProjectManager.Controllers;
    

    到全班第一,或者:

    @using ProjectManager.Models
    

    在你的 Razor 视图中。

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

    不过,您仍然需要为每个后端类添加 using。

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 2014-04-12
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多