2

我正在开发一个多语言应用程序。为此,我创建了自定义 BasePage 类,其中包含重写的 InitializeCulture 方法。

BasePage 类继承 System.Web.UI.Page 类,所有 Content Page 类都继承自 BasePage。一切正常,但存在一个问题:

当从 BasePage(而不是 System.Web.UI.Page)继承时,ContentPages 无法访问它自己的控件。

当我尝试引用内容页面代码中的任何控件时 - 总是会抛出 Nullreference 异常。

任何有关处理此问题的建议将不胜感激。

4

2 回答 2

0

我刚刚发现删除对 Button Master Page 的 Button Controls 的引用 - 解决了我的问题!

于 2013-04-07T10:53:18.987 回答
-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();
    }

}

}

于 2013-04-07T07:06:47.517 回答