【发布时间】:2019-03-21 13:10:18
【问题描述】:
我有一个 C# ASP.NET MVC 项目。这个项目有一个表单,它以yy/mm/dd hh:mm 的格式提交日期时间。控制器有一个模型绑定来接收表单值。
datetime 属性声明如下:
public DateTime? aDate { get; set; }
public DateTime? bDate { get; set; }
使用 Chrome 开发工具,我已经确认DateTime 值总是会被发送。
但是,有时会设置 aDate/bDate 属性,有时则不会。
我无法在发送的日期中观察到任何一致的行为或模式,这会导致这种情况。有时其中一个会被设置,而另一个不会。
如果模型中的所有其他属性对应的表单元素具有值,则始终会设置它们。
这可能是什么原因造成的?
【问题讨论】:
-
不要使用这种格式。使用 ISO8601 格式,与 Javascript 使用的格式相同。您使用的格式可以以任何方式可以想象的方式解析,尤其是因为一年只使用两位数。谁说前两位数字是年份而不是天?特别是 今天,2019 年 3 月 21 日?
21/03/19是什么意思?给定应用程序的语言环境,发送到应用程序的字符串很可能是无效的,并且活页夹会拒绝它 -
在 Javascript 中使用 Date.toISOString()。在您的 HTML 中确保您提交值,而不是您使用的任何日期选择器中的文本。例如,检查 <input type="date"> 元素的文档。日期格式为
YYYY-MM-DD -
我试过了,我使用了以下格式字符串 - yyyy-mm-ddThh:mm:ss.ffffff 它没有用
-
试过如何?在哪里?表单代码是什么样的?如何提交?
-
我的 datepicker 使用 input type="text" 我检查了提交的字符串并且每次都是正确的,即使服务器无法设置日期
标签: c# asp.net-mvc datetime