如何在asp.net页面中启动页面时初始化对象

时间:2010-11-22 06:51:24

标签: c# 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 个答案:

答案 0 :(得分:2)

通常,您需要声明一个您在构造函数或page_load / page_init中实例化的字段。根据您正在创建的内容,您可能还希望在最后明确处理资源。

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

然后您可以根据需要传递给其他类。如果您需要更强大的功能,或者需要实例存在,您可以从其他无法或不想明确传递的对象中使用它,您可以使用IoC容器等作为Castles Windsor,您可以使用它来解析和实例化PerWebRequest资源 - 但它可能需要一些设置并有自己的怪癖。

答案 1 :(得分: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;
    }
}