在ASP.NET中访问一个没有在App_Code中声明的类。

11 浏览
0 Comments

在ASP.NET中访问一个没有在App_Code中声明的类。

有时我会定义业务逻辑类来“帮助”我的ASPX代码后台类。对我来说,将它们都包含在代码后台文件中是最合理的,因为它们需要一起工作。然而,我偶尔也想从在App_Code中定义的更高级别的类中访问业务逻辑类,但它们无法自动在文件外部访问。

因此,问题是:很容易访问在App_Code中定义的类,但如何访问在其他地方定义的类?

更新:还有一件事,ASPX页面类和App_Code类在同一个命名空间中-这不是问题所在。

注意:我已经采纳了那些回答过我的人的建议(谢谢大家),并进行了重构以使类的访问更容易。然而,我认为问题实际上还没有得到回答(在ASP.NET网站项目的情况下)。我不再需要答案,但如果有人能澄清当类在App_Code之外时如何使其可见,这可能会对其他人有所帮助(甚至对我自己未来有所帮助)。

0
0 Comments

在ASP.NET中访问未在App_Code中声明的类的问题可能是由于文件被创建为内容文件而不是编译文件所导致的。

要解决这个问题,请按照以下步骤操作:

1)右键单击App_Code文件夹中的类文件。

2)点击属性。

3)将“Build Action”从“”更改为“Compile”。

4)重新构建应用程序。

这样做肯定会起作用。

另外,对于那些遇到此问题的人,你可以通过如下方法从网页代码后台访问这些类,并且将“Build Action”设置为“Compile”是正确的做法,但这并不是一个万能解决方法。我在将项目的目标框架从.NET 4.5.2降级到4.0时遇到了问题,我在App_Code中的类调用了其他App_Code类中的方法,但在降级后无法再这样做了。为了让它再次工作,我不得不用一个名为“AppCode”的标准文件夹替换App_Code,并将我的类移动到该文件夹中。

0
0 Comments

在ASP.NET中,如果要访问没有在App_Code中声明的类,出现了以下问题:

问题的原因:

1. 没有将类放在合理的命名空间中。

2. 没有在代码后台文件中使用'using'关键字来访问它们。

3. 没有在内联代码中使用<%@ import来使用它们。

4. 没有将包含这些类的dll放在/bin文件夹中。

解决方法:

1. 确保将类放在一个合理的命名空间中。

2. 在代码后台文件中使用'using'关键字来访问它们。

3. 在内联代码中使用<%@ import来使用它们。

4. 将包含这些类的dll放在/bin文件夹中。

另外,也可以将独立的库项目放在同一个解决方案中,并在Web项目中进行项目引用。这样,VS会自动处理构建和放置dll的工作。

感谢Anthony的建议。我不需要使用'using'关键字(或import),因为这些类在相同的命名空间和项目中。对于我的数据访问层(DAL),我认为你的建议可能是正确的。如果我的业务逻辑在一个独立的项目中,这样做也会使得nUnit测试更容易...

0
0 Comments

问题的出现原因是在ASP.NET中访问一个没有在App_Code中声明的类。这个问题的解决方法是将这些类放在一个单独的项目中,并在需要访问它们的项目中引用该项目。

在ASP.NET中,有一个特殊的文件夹叫做App_Code,用于存放应用程序中的类文件。这些类文件可以在整个应用程序中共享和访问。然而,有时候我们可能需要访问一个没有在App_Code中声明的类。

在上面的讨论中,某些情况下了将这些类放在一个单独的项目中的解决方法。他建议在解决方案中创建一个单独的项目,比如MyApp.Web和MyApp,然后从需要访问这些类的项目中引用该项目。

另一个人也提到了他在代码后台的.cs文件中定义了一个单独的类,并将其访问修饰符设置为public。他说这些“helper”类提供了特定于页面的业务逻辑,但他不愿意将它们都放在一个单独的项目中,因为它们与相应页面的需求密切相关。

解决这个问题的方法是将这些需要访问的类放在一个单独的项目中,并在需要访问它们的项目中引用该项目。这样可以确保这些类在整个应用程序中都可以被访问到,而不仅仅是在App_Code文件夹中。以下是一个示例代码,展示了如何在一个项目中引用另一个项目中的类:

// 引用需要访问的类所在的项目
using MyApp.Web;
namespace MyApp
{
    public partial class MyPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 创建一个需要访问的类的实例
            MyClass myClass = new MyClass();
            // 调用该类的方法
            myClass.DoSomething();
        }
    }
}

通过将这些类放在一个单独的项目中,并在需要访问它们的项目中引用该项目,我们可以解决访问没有在App_Code中声明的类的问题。这样可以使我们的代码更加模块化和可复用。

0