代码之家  ›  专栏  ›  技术社区  ›  Yogurtu

如何更改区域性以允许MVC帖子中使用(即)西班牙语datetime?

  •  1
  • Yogurtu  · 技术社区  · 7 年前

    我已经检查了一万个帖子,没有一个能解决这个非常简单的问题。

    在我的UI上,我有一个 TextBoxFor 对于DateTime属性(在我的模型上)来说,这是非常标准的东西。

    模型

    [DataType(DataType.Date)]
    public DateTime DateTo { get; set; }
    

    看法

            <div class="Label">
                @Html.LabelFor(model => model.DateTo)
            </div>
            <div class="Control">
                @Html.TextBoxFor(model => model.DateTo, "{0:dd/MM/yyyy}", new { @class = "datepicker" })
                @Html.ValidationMessageFor(model => model.DateTo)
            </div>
    

    jQuery/日期选择器

    以防万一,这是datepicker背后的代码,我认为这是jQuery datepicker的标准代码,请注意 在UI中,我看到datepicker按预期工作

    $(".datepicker").datepicker({ dateFormat: "dd/mm/yy", changeYear: true, showAnim: 'blind' });
    

    文化

    所以我从其他帖子中学到的是,你可以改变文化来实现这一点,但没有奏效,我推翻了 OnActionExecuting 使用此代码:

        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ES-AR");
        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ES-AR");
    

    我可以在观察窗口中看到,文化是“es ar”,但问题仍然存在。

    问题!

    问题1: 如果我写了像“2018年2月1日”这样的东西,MVC自动映射会认为是1月2日。。。但实际上是二月一日。

    问题2: 如果我写的是“2018年3月31日”,MVC automatic mapping会认为这是一个错误的日期(如第30个月),但实际上应该是3月30日。

    甚至页面验证程序也会说“ The value '31/03/2018' is not valid for DateTo. “”

    我错过了什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Yogurtu    7 年前

    Ookey,在解释这一点时,我得到了解决方案(橡胶垫堆栈溢出:/)。。。

    解决方案,如果您将其放入配置中,则效果良好:

    <globalization culture="es-AR" uiCulture="es-AR" />
    

    我看到的新问题 ,如果我不想实时改变文化回到美国呢?(改变线程文化似乎是解决方案,但并没有像我上面提到的那样奏效)

    现在,它解决了我的问题。