我在 .NET 4.0 上有一个 ASP.NET 网站应用程序。有一个 Masterpage 包含所有 aspx 页面的页眉和页脚。内容来自各个 aspx 页面。我有 BasePage.cs,所有 aspx 页面都继承自它。
现在解决问题:我在母版页上有一个 HTML Select 控件,我试图使用以下代码在 BasePage.cs 中检索其值
string language = ((System.Web.UI.HtmlControls.HtmlSelect)Master.FindControl("cmbLanguage")).Value;
我在 InitializeCulture 方法中使用它,该方法将为网站设置文化信息。
protected override void InitializeCulture()
{
string language = ((System.Web.UI.HtmlControls.HtmlSelect)Master.FindControl("cmbLanguage")).Value;
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(language);
base.InitializeCulture();
}
在调试时,我可以看到language
变量中设置了预期值。问题是当页面呈现时,aspx 页面的 ContentPlaceHolder 内的内容没有被呈现。
我可以看到FindControl
这是导致原因的代码,因为如果我将语言设置为字符串,一切都会按预期工作。
string language = "de-DE";
我究竟做错了什么?
更新: 如果 MasterPage 上的 ContentPlaceHolder 上有一些内容,则呈现它而不是页面 ContentPlaceHolder。