Контент в моих файлах локальных ресурсов, кажется, кэшируется

У меня есть веб-страница, где я использую файлы App_LocalResources, где у меня есть переводы на 2 языка.

Это работает очень хорошо. Однако, когда я открываю свои две страницы, у меня возникает довольно странная проблема. Если я открою английскую версию, мой датский URL также будет английским. Если я сначала открою медданский URL, то английский будет на датском. Если я CTRL+F5, это меняет язык.

Вы можете увидеть результат здесь:

Это действительно раздражает, так как должно сразу загрузить соответствующий язык.

Мой код на странице butbtc.aspx (я также пробовал Page_Load):

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    SetupLanguage();

}

Мой метод SetupLanguage:

private void SetupLanguage()
    {
        if (!string.IsNullOrEmpty(CurrentLanguage))
        {
            if (CurrentLanguage == "da")
            {
                CultureInfo dkinfo = CultureInfo.CreateSpecificCulture("da-dk");
                CultureInfo.DefaultThreadCurrentCulture = dkinfo;
                CultureInfo.DefaultThreadCurrentUICulture = dkinfo;
                Thread.CurrentThread.CurrentCulture = dkinfo;
                Thread.CurrentThread.CurrentUICulture = dkinfo;

                Page.Title = GetLocalResourceObject("PageTitleString").ToString();
                return;
            }
        }
        CultureInfo info = CultureInfo.CreateSpecificCulture("en-us");
        CultureInfo.DefaultThreadCurrentCulture = info;
        CultureInfo.DefaultThreadCurrentUICulture = info;
        Thread.CurrentThread.CurrentCulture = info;
        Thread.CurrentThread.CurrentUICulture = info;

    }

Мое свойство CurrentLanguage определяется так:

 public string CurrentLanguage
    {
        get
        {
            var toolValue = Page.RouteData.Values["language"];
            if (toolValue != null && !string.IsNullOrEmpty(toolValue.ToString()))
            {
                return toolValue.ToString();
            }
            return string.Empty;
        }
    }

Если мой маршрут имеет какое-либо значение, это:

  routes.MapPageRoute("Buy Bitcoins",
                        "buybtc/{language}",
                        "~/buybtc.aspx");

1 ответ

Решение

Вам нужно переопределить InitializeCulture, например:

protected override void InitializeCulture()
{
    SetupLanguage();
    base.InitializeCulture();
}

Это называется ранее в жизненном цикле страницы. Смотрите также: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

Другие вопросы по тегам