У меня есть гибридное приложение ASP.Net для веб-форм / MVC.На одной из "страниц" / представлений MVC он отображает несколько дат с помощью ToShortDateString () и ToLongDateString ().Они работают правильно в большинстве случаев, но при первой загрузке представления после компиляции приложения они неправильно форматируются.
Я проследил это и проверил культуру текущего потока.В 99% случаев это en-US, но при первой загрузке представления MVC после компиляции он устанавливается в en-GB.Если я сразу же после этого перезагружаю страницу, она возвращается в en-US.
Я попытался установить для культуры и uiculture в файле web.config значение en-US, чтобы оно было правильным, но безуспешно.
У кого-нибудь есть идеи по этому поводу?Ошибка в MVC?
Редактировать (дополнительный код и попытки): Даже если я перейду полностью за борт и включу это в базовый класс представления
public class DNViewPage<T> : ViewPage<T> where T : class
{
protected override void OnInit(EventArgs e) {
base.OnInit(e);
CultureInfo cultureInfo = new CultureInfo("en-US");
this.Culture = "en-US";
this.UICulture = "en-US";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
}
protected void Page_Load(object sender, EventArgs e) {
CultureInfo cultureInfo = new CultureInfo("en-US");
this.Culture = "en-US";
this.UICulture = "en-US";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
}
protected override void InitializeCulture() {
CultureInfo cultureInfo = new CultureInfo("en-US");
this.Culture = "en-US";
this.UICulture = "en-US";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
base.InitializeCulture();
}
}
и включу его в Интернет.config
<globalization requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="en-US" culture="en-US"/>
и это в заголовке файла .aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Culture="en-US" UICulture="en-US"
Опять же, это только при начальной загрузке после компиляции кода, когда эта страница загружается впервые.На другие страницы веб-форм это не влияет, даже если они происходят от System.Web.Mvc.ViewPage.Все последующие нагрузки правильно относятся к культуре.Простое изменение файла .aspx не приводит к этому, код c # должен быть скомпилирован, чтобы вызвать это.
Дополнительные данные: у меня он отслежен до метода Render.До метода Render культура была en-US, а затем en-GB (опять же только при начальной загрузке страницы после компиляции).