Удаленная проверка с параметром datetime - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть проект 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...