Почему InitializeCulture не вызывается - PullRequest
1 голос
/ 07 мая 2019

У меня есть базовый класс страницы, который реализует защищенное переопределение void InitializeCulture (), однако он никогда не вызывается во время процесса рендеринга страницы?

Я добавил следующий код на свою базовую страницу

        protected override void InitializeCulture()
        {
            var cultureCode = ConfigManager.GetConfig("System:CultureCode") ?? "en-GB";
            var cultureInfo = CultureInfo.CreateSpecificCulture(cultureCode);
            Thread.CurrentThread.CurrentCulture = cultureInfo;
            Thread.CurrentThread.CurrentUICulture = cultureInfo;
        }

Значение, возвращаемое ConfigManager.GetConfig("System:CultureCode"), является en-US.

Переопределенный метод никогда не вызывается, и txtCulture.Text = Thread.CurrentThread.CurrentCulture.Name на моей тестовой странице всегда возвращает en-GB!

1 Ответ

1 голос
/ 07 мая 2019

Вы унаследовали BasePage от System.Web.UI.Page, я воспроизвел его, работал

public class BasePage : System.Web.UI.Page
    {
        protected override void InitializeCulture()
        {
            var cultureCode = ConfigManager.GetConfig("System:CultureCode") ?? "en-GB";
            var cultureInfo = CultureInfo.CreateSpecificCulture(cultureCode);
            Thread.CurrentThread.CurrentCulture = cultureInfo;
            Thread.CurrentThread.CurrentUICulture = cultureInfo;
        }
    }

Страница по умолчанию

public partial class _Default : BasePage
{
       protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {                   
            } 
        }
}
...