2013-04-06 61 views
2

我正在開發一個多語言應用程序。 因此,我創建了自定義BasePage類,其中包含overriden InitializeCulture方法。asp.net webforms:BaseClass inheritance/ContentPage控件不可訪問

BasePage類繼承System.Web.UI.Page類,所有內容頁面類都從BasePage繼承。 一切正常,但存在一個問題:

當從BasePage(而不是System.Web.UI.Page)繼承時,ContentPages無法訪問它自己的控件。

當我嘗試引用內容頁面代碼中的任何控件時,總是會拋出Nullreference異常。

有關處理這個問題的任何建議將不勝感激。

+0

向我們展示一些BasePage代碼。你具體是否重寫Init或PreInit方法? – Stilgar 2013-04-07 01:10:08

回答

0

我剛剛發現,刪除對巴頓母版頁的按鈕控件的引用 - 固定我的問題!

-1

這裏有一個BasePage類代碼:

命名空間MultiLingualApp {

public class BasePage : System.Web.UI.Page 
{ 

    protected override void InitializeCulture() 
    { 
     string selectedLanguage = "en-GB"; 
     HttpCookie langCookie = Request.Cookies["langCookie"]; 
     if (langCookie == null) 
     { 
      Button btnEnglish = (Button)this.Master.FindControl("btnEnglish"); 
      btnEnglish.Enabled = false; 
     } 
     else 
     { 
      if (!string.IsNullOrEmpty(langCookie.Values["lang"])) 
      { 

       string cookie = langCookie.Values["lang"].ToString(); 
       if (cookie.Equals("en-GB")) 
       { 
        selectedLanguage = "en-GB"; 
        Button btnEnglish = (Button)this.Master.FindControl("btnEnglish"); 
        btnEnglish.Enabled = false; 

       } 
       else if (cookie.Equals("th-TH")) 
       { 
        selectedLanguage = "th-TH"; 
        Button btnThai = (Button)this.Master.FindControl("btnThai"); 
        btnThai.Enabled = false; 
       } 
      } 
     } 


     if (selectedLanguage != null) 
     { 
      UICulture = selectedLanguage; 
      Culture = selectedLanguage; 
      Thread.CurrentThread.CurrentCulture = 
      CultureInfo.CreateSpecificCulture(selectedLanguage); 
      Thread.CurrentThread.CurrentUICulture = new 
      CultureInfo(selectedLanguage); 
     } 

     base.InitializeCulture(); 
    } 

} 

}