0

我知道可以在我的 Web-Form 类的 App_Code 文件夹中使用一个类。但是,是否可以从 App_Code 中的类调用我的 Web-Form 类?

如何?

谢谢

4

1 回答 1

1

请记住:在网络上工作时,一切都发生在请求/响应的上下文中。您想要做的是为您的 App_Code 中需要查看您的网络表单的任何方法提供该上下文。这些方法将需要一个额外的HttpContext参数,如下所示:

public void AppCodeMethod(HttpContext currentContext)

这将使您能够访问上下文的RequestResponse属性。您也可以让这些方法接受 webform 类的实例,但通常当我看到这一点时,这表明对 webforms 的工作方式理解不足,并且在放弃该方法后找到了更好的解决方案。

您不应该做的一件事是在 App_Code 中有一个依赖于持久状态的类。这些类应该没有您希望在单个事件触发时保存值的字段或属性。在 ASP.Net 中,容纳您的类的整个线程在您处理的每个事件之间被重置。理解这一点很重要:每次处理事件时,都会创建一个全新的表单类实例,再次运行 page_load 方法,最终运行事件代码,然后销毁表单类(以及整个线程)(或重置以准备好处理来自完全不同用户的请求)。Web Forms 试图创建一个抽象来使 http 层看起来像一个单一的、持久的页面,但是这个抽象到处都是泄漏的。

因此,App_Code 类的最佳用途通常是为多个页面共享的实用方法保留它们,但仍然只依赖于来自单个 http 请求的信息。

于 2014-02-20T18:26:54.373 回答