【发布时间】:2013-12-19 15:37:01
【问题描述】:
我的模型中有一个 DateTime 字段,它在我的视图中以如下形式显示:
<div class="editor-field">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div>
当一个新模型被创建并插入我的数据库时,我为它分配了一个值09/11/1990 15:36:22。如果我尝试使用我的视图编辑此模型并且不更改我的模型的 Age 的值,则模型将被验证并且对其他字段的任何更改都将被接受并保存。但是,如果我将 Age 字段更改为 07/27/2010 15:36:22 我收到验证错误“The value '07/27/2010 15:36:22' is not valid for Age. 但是,日期 09/12/2010 15:36:22 已成功验证。发生这种情况的任何原因?在调试器中,返回的值无效日期是01/01/0001。
编辑:我认为这与 jquery-validate 和我的系统的文化有关,因为客户端验证失败的任何日期为 DD/MM/YYYY 格式,而服务器端验证失败的任何日期格式为 MM/DD/YYYY。
【问题讨论】:
-
听起来像是日期格式的问题 - dd/MM/yyyy vs MM/dd/yyyy。您的
Age属性是否指定了要使用的格式? (首先将它用于Age似乎很奇怪——我希望它是DateOfBirth,然后你可能也不需要担心时间组件。) -
事实上验证器在这一点上是正确的,因为 '07/27/2010 15:36:22' 是一个非常奇怪的年龄 ;-)
-
@JonSkeet 计算某事发布的时间。它的帖子年龄不是人,这就是我需要秒字段的原因。
-
@FloodGravemind: 好的,那我就叫它
PostingTimestamp或类似的名字 - 这不是一个实际的年龄,它是一个长度的时间(2 年或任何)。命名很重要 :) 当然,除了实际问题之外,它仍然值得一看。
标签: asp.net asp.net-mvc validation c#-4.0 datetime