【问题标题】:Unable to access class from app_code无法从 app_code 访问类
【发布时间】:2014-09-02 13:04:04
【问题描述】:

我有一个包含default.aspxdefault.aspx.cs 的网站(不是网络应用程序)。 它有一个App_Code 文件夹,里面有A 类。 所以default.aspx.cs。看起来像:

namespace test1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

还有班级A

namespace test1
{
    public class A
    {
        _Default mDefaultRef;
        public pageLogicIndividual(_Default defaultRef)
        {
            mDefaultRef = defaultRef;
        }
    }
}

我可以在_Default 中使用A。例如。如果我在_Default 类中工作时键入test1.,IntelliSense 将显示这两个类。 但是如果我在课堂上工作时键入test1.,则智能感知将只显示A。 为什么我不能在A 中使用_Default

错误:命名空间中不存在类型或命名空间名称 (您是否缺少程序集参考)

编辑: 我会尽力澄清。 在类_Default 所在的.cs 文件中工作时,我可以输入test1.,这是命名空间,智能感知将显示类_Default 和类A。 但是,如果我在 A 类所在的 .cs 文件中工作并键入命名空间 test1.,那么智能感知将只显示类 A

【问题讨论】:

  • "f i type "test1." IntelliSense 将显示两个类。但如果我在 IntelliSense 中输入 "test1." 将只显示 A。"有点混乱。究竟是什么行为?
  • 这不是经典的 ASP - 请将您的标签更改为 asp.net

标签: c# asp.net web-site-project app-code


【解决方案1】:

我过去曾遇到过这个挑战。

在 Visual Studio 中打开 App_Code 文件夹节点。 右键单击相关类,然后单击属性

在属性窗格中,将 Build Action 更改为 Compile。

现在应该可以正常工作了。

【讨论】:

  • 没有那个选项。我只有文件名和完整路径
  • 什么样的项目?网站或网络项目?还有,什么版本的visual studio
  • 这是一个网站项目
【解决方案2】:

您的问题在于您在创建新文件后添加了自己的误导性 namespace,因为 ASP.NET 网站 没有命名空间。命名空间在 Web 应用程序 项目中可用。即创建新网站后,名称空间不会添加到文件中。

所以你不需要将你的类 A 放在 test1 命名空间中,因为即使没有命名空间,你也可以在 default.aspx.cs 中使用 A,但是 你不能从网络表单页面或App_Code 课程

顺便说一句,如果您想在 Default Web 表单的类中使用必要且可重用的方法,您可以将这些方法移出到 A 类,该类在 App_Code 下,正如我已经说过的,您可以使用它在所有Web Form CodeFiles 中,而不为它提供命名空间。

【讨论】:

    【解决方案3】:

    简而言之,您无法从App_code 类访问页面类。
    这个限制来自website project 编译模型。特殊的App_code 文件夹包含共享 类(可能还有其他资源)可供页面(以及彼此)使用。在编译期间,App_code 首先在单个程序集中进行编译。这是关键点。页面、控件和 MasterPages 在另一个程序集中编译,该程序集可能引用了App_code 程序集(反之亦然)。所以这是单向路。
    没有namespace 声明应该规避这种行为。
    页面可以在 ASP 命名空间 (ASP.default_aspx) 中看到彼此,但页面通常没有公共属性/方法(用户控件 .ascx 通常有)。
    在 MSDN Code-Behind Pages 上阅读更好的解释

    【讨论】:

      猜你喜欢
      • 2010-11-16
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多