.NET 4.0 で ASP.NET Web サイト アプリケーションを使用しています。すべての aspx ページのヘッダーとフッターを含む 1 つのマスターページがあります。コンテンツは個々の aspx ページから取得されます。すべての aspx ページが継承する BasePage.cs があります。
問題は次のとおりです。マスターページに HTML Select コントロールがあり、その値を以下のコードを使用して BasePage.cs で取得しようとしています。
string language = ((System.Web.UI.HtmlControls.HtmlSelect)Master.FindControl("cmbLanguage")).Value;
これを InitializeCulture メソッド内で使用しています。これにより、Web サイトのカルチャ情報が設定されます。
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 の代わりにレンダリングされます。