【发布时间】: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