2010-11-22 69 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