POST 上的日期无效,但在我获取页面时有效
Date is invalid on POST, but valid when I GET the page
我有一个基于模型的简单 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 个端点之间发送值时(例如在浏览器和服务器之间)。
这样无论客户端或服务器文化如何,都不会产生歧义。
示例:
@Html.HiddenFor(c => c.PaymentStartDate.ToString("o"))
我有一个基于模型的简单 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 个端点之间发送值时(例如在浏览器和服务器之间)。
这样无论客户端或服务器文化如何,都不会产生歧义。
示例:
@Html.HiddenFor(c => c.PaymentStartDate.ToString("o"))