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

问题描述 投票:1回答:1

我已经检查了1万个帖子,他们都没有关于这个非常简单的问题的伎俩。

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

模型

[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个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.