我知道可以在我的Web-Form类的App_Code文件夹中使用一个类。 但是,是否可以从App_Code中的类调用我的Web-Form类?
如何?
感谢
答案 0 :(得分:1)
请记住:在网络上工作时,一切都在请求/响应的上下文中发生。您要做的是为App_Code中需要查看您的webform的任何方法提供该上下文。这些方法需要额外的HttpContext
参数,如下所示:
public void AppCodeMethod(HttpContext currentContext)
这样,您就可以访问上下文的Request
和Response
属性。你也可以让这些方法接受一个webform类的实例,但通常当我看到它时,这表明对webforms的工作方式缺乏了解,并且放弃了这种方法后找到了更好的解决方案。
你应该不做的一件事就是在App_Code中有一个依赖于持久状态的类。这些类应该没有您期望在单个事件触发时保持值的字段或属性。在ASP.Net中,在您处理的每个事件之间重置容纳您的类的整个线程。这一点很重要:每次处理事件时,都会创建一个全新的表单类实例,再次运行page_load方法,最后运行事件代码,然后销毁表单类(和整个线程)(或重置以准备处理来自完全不同的用户的请求)。 Web窗体试图创建一个抽象来使http层看起来像一个持久的页面,但这种抽象漏掉了所有地方。
因此,App_Code类的最佳用途通常是为多个页面共享的实用程序方法保留它们,但仍然只依赖于来自单个http请求的信息。