如何更改文化以允许(即)MVC POST中的西班牙语日期时间?

时间:2018-03-06 14:16:18

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

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

在我的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");

我可以在检查窗口看到文化是&#34; es-ar&#34;,但问题仍然存在。

的问题!

问题1: 如果我写了类似于&#39; 01/02/208&#39;,MVC自动映射认为它是1月2日......但实际上是2月1日。

问题2: 如果我写了类似于&#39; 31/03/201&#39;,MVC自动映射认为这是一个错误的日期(如30月),但实际上是3月30日。

即使是页面验证工具也会说&#34; The value '31/03/2018' is not valid for DateTo.&#34;

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

oookey,在解释这一点时,我得到了解决方案(橡皮鸭堆栈溢出:/)......

解决方案,如果你把它放在你的配置中它可以正常工作:

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

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

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