【问题标题】:Cannot access a class in project's root无法访问项目根目录中的类
【发布时间】:2013-01-03 04:53:18
【问题描述】:

我有一个配置类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace VCProjectHost
{
    public static class Configs
    {
        public static string SiteName { get; set; }

        static Configs()
        {
            SiteName = "Ahmadali Shafiee's Projects Host";
        }
    }
}

这是我_Layout.cshtml的一部分

<title>
    @{
        Write(ViewBag.Title);
        if (ViewBag.Title != null)
        {
            Write(" | ");
        }
        Write(VCProjectHost.Configs.SiteName);
    }
</title>

但是Write(VCProjectHost.Configs.SiteName); 会抛出一个错误,指出Configs 不存在!

【问题讨论】:

  • @LastCoder:他使用的是完全限定的名称,因此不需要 using 语句(虽然这样更便于阅读)
  • @LastCoder 如果您阅读代码,您会看到 1. 我正在使用 razor 视图引擎 2. using 不是必需的!
  • @ahmadali shafiee - 祝你好运

标签: c# asp.net asp.net-mvc asp.net-mvc-4 c#-5.0


【解决方案1】:

我认为这里的问题是你没有在你的类上指定可见性修饰符,因此默认情况下它是internal。尝试将其更改为:

public static class Configs
{
   ...
}

更新

查看您尝试过的所有事情,我正在努力找出问题所在。作为临时解决方法,您可以将站点名称作为 ViewBag 的一部分传递(就像您已经在使用标题一样)。

【讨论】:

  • 不!我已经编辑了这个问题,我错误地删除了public。在项目中是可以的!
  • 嗯,我只能假设这是位于站点根目录的类的问题。如果你移动它说 Models 文件夹/重新编译它可以工作吗?
  • 我已将其移至models 文件夹,但问题未解决!
  • 可以从控制器访问静态类吗?
  • @ahmadalishafiee 这显然是可见性/编译问题。尝试创建一个新的静态类,看看是否可行。
【解决方案2】:

会不会是因为某种原因该课程没有出现在网站上?如果在单独的项目中,请确保项目生成的 DLL 文件存在于您的 bin 目录中。如果它在同一个项目中,请确保在项目文件属性中将其构建操作设置为“编译”。

【讨论】:

  • 它在我的项目中。在构建选项卡中的项目属性中,配置为Active (Debug)
  • 我说的是每个文件的构建操作,而不是项目范围的构建配置。但我猜你还是解决了它(创建一个新文件可能只是正确设置了构建操作)
  • 谢谢,我正在寻找创建新文件解决问题的原因!
【解决方案3】:

确保您的类文件的“构建操作”设置为“编译”(在解决方案资源管理器中右键单击文件并选择属性)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多