Andrew HB
Andrew HB

Reputation: 412

Why is InitializeCulture not being called

I have a base page class that implements protected override void InitializeCulture() however it is never called during the page rendering process?

I have added the following code to my base 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;
        }

The value returned by ConfigManager.GetConfig("System:CultureCode") is en-US.

The overridden method is never called and the txtCulture.Text = Thread.CurrentThread.CurrentCulture.Name in my test page always returns en-GB!

Upvotes: 1

Views: 442

Answers (1)

Hien Nguyen
Hien Nguyen

Reputation: 18975

Did you inherit BasePage from System.Web.UI.Page, I reproduced it worked

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;
        }
    }

Default page

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

Upvotes: 1

Related Questions