我在.NET 4.0上有一个ASP.NET网站应用程序。有一个Masterpage包含所有aspx页面的页眉和页脚。内容来自个人aspx页面。我有所有的aspx页面继承的BasePage.cs。使用FindControl访问基页上的主页控件
现在的问题: 我对母版一个HTML选择控制,其值我尝试使用下面的代码
string language = ((System.Web.UI.HtmlControls.HtmlSelect)Master.FindControl("cmbLanguage")).Value;
我使用这个InitializeCulture内的BasePage.cs检索方法,它将为网站设置文化信息。
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
变量设置。问题在于页面呈现时,ContentPlaceHolder中的aspx页面内容没有呈现。
我可以看到它是代码涉及FindControl
这是原因,因为如果我将语言设置为字符串,一切都按预期工作。
string language = "de-DE";
我在做什么错?
UPDATE: 如果对母版中的ContentPlaceHolder一些内容,那么它就会被渲染,而不是页面的ContentPlaceHolder。
是任何内容(标记)在MasterPage的ContentPlaceHolder **中? contentplaceholder控件中的标记不会被渲染。 – adatapost
@AVD:MasterPage的ContentPlaceHolder中没有内容。 – itsbalur
忘记母版页,您无法在InitializeCulture调用时访问任何控件,因为它们根本不存在。您需要按照答案中提供的解决方案进行操作:cookie,查询字符串值+会话或仅查询字符串值,url重写(www.mysite.com/en/products) –