【问题标题】:Why Datetime is null on Post MVC?为什么 Post MVC 上的 Datetime 为空?
【发布时间】: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 年或任何)。命名很重要 :) 当然,除了实际问题之外,它仍然值得一看。
  • 这可能会有所帮助stackoverflow.com/a/14081487/1236044

标签: asp.net asp.net-mvc validation c#-4.0 datetime


【解决方案1】:

假设您想让模型在客户端工作,那么我会更改您的 ASP .NET 全球化设置以强制系统使用您想要的全球化。如果您希望客户使用使用一种一致日期时间格式的系统,这才是真正有效的解决方案。

您遇到的问题(我认为)是一些浏览器在它们使用客户端的全球化和它们呈现给更广阔世界的全球化方面并不一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2010-10-31
    • 2016-12-07
    • 2014-10-13
    • 1970-01-01
    • 2022-11-11
    • 2021-09-23
    相关资源
    最近更新 更多