【发布时间】:2013-12-10 19:27:25
【问题描述】:
我有一个带有 ArrivalDate 属性的模型,其注释为:
[DisplayFormat(DataFormatString = "{0:dd'/'MM'/'yyyy}", ApplyFormatInEditMode = true)]
我还在Web.config 文件中将我的全球化变量设置为:
<globalization uiCulture="en-GB" culture="en-GB" />
由于某种原因,在我的一个视图上创建编辑器时,它允许各种事情,但不是我所追求的。我正在尝试获取30/12/2013 的格式。
我可以使用:
- 30/Dec/2013 - 验证并保存良好
- 20/30/2013 - 通过验证但结果:
The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.将更改保存到数据库时(预期,但为什么它通过验证)。 - 30/December/2013 - 验证并保存良好
起初我以为我必须使用小写的m,但这似乎并没有改变什么?
任何人有任何想法,我现在正面临一堵砖墙?
编辑:我应该指出,当使用 30/12/2013 时,它似乎无法通过以下消息验证:The field Arrival Date must be a date.
【问题讨论】:
-
您为什么要使用日期控制类型?
-
好问题.. 我现在只使用默认的
@Html.EditorFor(model => model.ArrivalDate),一旦我能正常工作,我会尝试添加一个更漂亮的输入字段。 -
当您说它通过/失败时,您是否使用了不引人注目的 (JavaScript) 验证,然后您在实际转换为 DateTime 对象时遇到错误?我打算建议您使用标准格式字符串 (msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx),但我现在想知道模型绑定器是否未能将文化设置考虑在内。
-
@ErikNoren 我没有在视图中添加任何花哨的东西。我所做的只是生成一个模型和数据库。从中生成控制器和视图,然后通过代码添加,首先将 ArrivalDate DateTime 属性迁移到模型。现在我正在尝试将该新属性添加到创建表单中。我正在做的一件事(对于某个用户角色是限制一些值并将我自己设置为发布操作。我也在使用
ModelState.Clear()(仅在这种情况下,目前这不适用于任何角色的用户) )
标签: c# asp.net asp.net-mvc datetime