У меня есть проект MVC 5,
мой проект многоязычен, проблема в том, что когда я использую удаленную проверку и отправляю параметр типа DateTime, сервер не обращает внимания на CurrentCulture, он используеткультура по умолчанию ("en-US").
У меня много проектов в моем проекте, большинство из них имеют объекты DateTime, и они работают хорошо.
вот пример моего кода:
Просмотр свойства модели
[Display(Name = "CompetitionCycleStartDate", ResourceType = typeof(Competitions))]
[DisplayFormat(DataFormatString = Formats.UKFormat, ApplyFormatInEditMode = true)]
[Required(ErrorMessageResourceName = "CompetitionCycleStartDateRequired", ErrorMessageResourceType = typeof(Competitions))]
[Remote("CheckStartDateCross", "CompetitionCycle", ErrorMessageResourceName = "CycleStartDateCrossMsg", ErrorMessageResourceType = typeof(Competitions))]
public DateTime CompetitionCycleStartDate { get; set; }
Метод удаленной проверки
public ActionResult CheckStartDateCross(DateTime CompetitionCycleStartDate)
{
var isItNotCross = competitionCycleService.CheckIfStartDateNotCross(CompetitionCycleStartDate);
return Json(isItNotCross, JsonRequestBehavior.AllowGet);
}
Установка кода культуры
protected override void Initialize(RequestContext requestContext)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
var routeData = requestContext.RouteData;
if (routeData.Values.ContainsKey("MS_DirectRouteMatches"))
{
routeData = ((IEnumerable<RouteData>)routeData.Values["MS_DirectRouteMatches"]).First();
CurrentLanguageCode = routeData?.Values["lang"] as string;
}
else if (requestContext.RouteData.Values["lang"] != null && requestContext.RouteData.Values["lang"] as string != "null")
{
CurrentLanguageCode = (string)routeData.Values["lang"];
}
if (CurrentLanguageCode != null)
{
try
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(CurrentLanguageCode);
}
catch (Exception)
{
throw new NotSupportedException($"Invalid language code '{CurrentLanguageCode}'.");
}
}
else
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar");
}
base.Initialize(requestContext);
}
Web.Config
<globalization culture="en-GB"></globalization>