У меня есть веб-приложение ASP.NET на .NET 4.0.Существует одна главная страница, которая содержит верхний и нижний колонтитулы для всех страниц 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
.Проблема в том, что когда страница отображается, содержимое внутри ContentPlaceHolder для страницы aspx не отображается.
Я вижу, что причиной является код, включающий FindControl
, потому что, если я устанавливаю язык в строку, все работает как положено.
string language = "de-DE";
Что ячто-то не так?
ОБНОВЛЕНИЕ: Если в ContentPlaceHolder на MasterPage есть какой-то контент, то он отображается вместо страницы ContentPlaceHolder.