【发布时间】:2018-02-26 15:43:40
【问题描述】:
我有一个基于模型的简单 ASP.NET MVC 视图。该模型具有以下属性:
public DateTime PaymentStartDate { get; set; }
当我在 GET 方法中进入我的视图时,PaymentStartDate 的值是 3 月 31 日 (31/3/2018 23:59:59)。
在我看来,我做了以下事情:
@Html.HiddenFor(c => c.PaymentStartDate)
呈现如下:
<input data-val="true" data-val-date="The field PaymentStartDate must be a date." data-val-required="The PaymentStartDate field is required." id="PaymentStartDate" name="PaymentStartDate" type="hidden" value="03/31/2018 23:59:59" />
但是当我 POST 到我的端点时,我的模型状态无效,因为:
The value '03/31/2018 23:59:59' is not valid for PaymentStartDate.
问题:
如果我选择一个日期,例如3/12/2018,它会起作用。所以我的假设是因为我有一台丹麦机器(使用 dd/MM/yyyy 格式),它会带来一些问题。
任何想法或提示我可以在这里做什么?
【问题讨论】:
-
始终对 Date 和 DateTime 值使用 ISO8601 表示法,特别是当您将值存储为字符串(如在 HTML 中)以及在 2 个端点(如浏览器和服务器)之间发送值时。
-
是的,很可能就是这样。使用明确的日期格式,例如 ISO8601。 Ps 03/12/2018 可能“有效”,但服务器会认为您的意思是 3 月 12 日而不是 12 月 3 日,因此它可能无法按您的预期工作。
-
如果你不需要显示它,我会说总是使用 Unix 时间戳。 0 歧义
标签: c# asp.net-mvc asp.net-mvc-5 globalization