【问题标题】:How do I Change culture to allow (i.e.) spanish datetime in MVC POST?如何更改文化以允许(即)MVC POST 中的西班牙日期时间?
【发布时间】:2018-03-06 14:16:18
【问题描述】:

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

在我的 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

以防万一,这是 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: 如果我写了“01/02/2018”之类的内容,MVC 自动映射会认为是 1 月 2 日……但实际上应该是 2 月 1 日。

问题 2: 如果我写了“31/03/2018”之类的内容,MVC 自动映射会认为这是一个错误的日期(例如 30 月),但实际上应该是 3 月 30 日。

偶数页面验证器显示“The value '31/03/2018' is not valid for DateTo.

我在这里错过了什么?

【问题讨论】:

    标签: c# asp.net-mvc validation datetime datepicker


    【解决方案1】:

    oookey,在解释这一点时,我得到了解决方案(橡胶躲避 stackoverflow:/)...

    解决方案,如果你把它放在你的配置中就可以了:

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

    我看到的新问题,如果我不想实时改变文化以返回 EN-US,该怎么办? (改变线程文化似乎是解决方案,但没有像我上面提到的那样工作)

    目前,它解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2017-08-03
      相关资源
      最近更新 更多