2010-11-22 64 views
1

我需要从页面启动时初始化一个对象,并通过特定页面使用这些对象,我该怎么做。如何在asp.net页面启动页面时初始化对象

//模块进行初始化

  XTContext.UserContext UContext = new XTContext.UserContext(); 
      XTContext.Context ctxt = new XTContext.Context(); 
      XTErrorCollection.ErrorCollection eContext = new XTErrorCollection.ErrorCollection(); 
      ctxt = (XTContext.Context)Cache["sessionfContext"]; 
      ctxt.eContext = eContext; 
      ctxt.uContext = UContext; 

现在我想使用的页面和控件事件里面的ctxt。 我试图初始化它在页面加载,但我不能访问ctxt。

回答

2

一般而言,您需要声明一个字段,您将在构造函数或page_load/page_init中实例化该字段。根据你创建的内容,你也可能希望在最后显式地处理资源。

public class MyPage 
{ 
    private object myobject = null; 
    public MyPage() 
    { 
     myobject = new Object(); 
    } 
} 

然后,您可以根据需要传递给其他类。如果您需要更强大的功能或者需要实例存在的方式,您可以从其他对象中使用它,但不能或不想显式地通过它,则可以使用IoC容器,例如作为城堡温莎,你可以用它来解决和实例化资源PerWebRequest - 但它可能需要一些设置,并有它自己的怪癖。

+0

看起来好像你不仅希望它的页面的生活,而且还请求之间。如果您需要的信息是基于每个用户的话,使用Cache对象可能并不明智,如果是这样的话,您可能会引入安全漏洞。会话更好,但无处不在。 ViewState可用于在请求之间存储信息,但会增加页面权重,不应将其用于任何敏感信息(如信用卡详细信息),因为尽管加密它最终会在浏览器缓存中结束。除视图状态以外的任何内容都将要求您管理请求之间的初始化。 – Mark 2010-11-22 11:29:45

2

试试这个 -

public partial class YourPage : System.Web.UI.Page 
{ 
    XTContext.UserContext UContext; 
    XTContext.Context ctxt; 
    XTErrorCollection.ErrorCollection eContext; 


    protected void Page_Load(object sender, EventArgs e) 
    { 
     UContext = new XTContext.UserContext(); 
     ctxt = new XTContext.Context(); 
     eContext = new XTErrorCollection.ErrorCollection();      

     ctxt = (XTContext.Context)Cache["sessionfContext"]; 
     ctxt.eContext = eContext; 
     ctxt.uContext = UContext; 
    } 
} 
+0

当页面进行回发时,值再次被初始化为空。任何其他方式 – 2010-11-22 10:19:34

+0

检查页面是否回发并初始化值。如果(!IsPostBack){//一些代码} – pavanred 2010-11-22 10:55:22

相关问题