【问题标题】:DateTime "must be a date" only with slashesDateTime“必须是日期”,只有斜杠
【发布时间】:2015-06-10 23:50:49
【问题描述】:

当我使用以下代码时,我只能填写(输入字段)如下:

2014 年 10 月 10 日 我无法填写 2014 年 10 月 10 日 在火狐上

注意当使用正则表达式时,不使用正斜杠时仍然会报错 / 如果正则表达式允许 - 或任何其他符号,C# 本身仍然会给出“必须是日期”

型号:

[Required(ErrorMessage = "Field is Required")]
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd.MM.yy}", ApplyFormatInEditMode = true)]
public DateTime Bday { get; set; }

创建.cshtml

<div class="editor-field">
    @Html.EditorFor(model => model.Bday)
    @Html.ValidationMessageFor(model => model.Bday)
</div>

【问题讨论】:

  • iirc 的问题在于客户端验证,您需要安装本地化以进行 jquery 验证和/或覆盖标准验证。
  • 有道理,我该怎么做@Mark?
  • 我唯一知道的是我也遇到过这个问题,但我不记得我是如何解决这个问题的,只是它与 jquery 验证本地化有关,例如参见 @987654321 @
  • 本地化似乎只改变了消息,我也包括了方法,但它实际上并没有将格式从 / 更改为 -
  • 查看 - 例如 - 本地化文件夹中的 methods_de.jsmethods_nl.js

标签: c# asp.net-mvc


【解决方案1】:

据我所知,yy format specifier 不接受 4 位数年份。它只接受 2 位年份。

尝试改变你的DataFormatStringlike;

DataFormatString = "{0:dd.MM.yyyy}"

【讨论】:

  • 编辑:每当我将 / 更改为 a - 它都会立即显示“必须是日期”
  • @EUDM 你确定你添加了这个确切的格式吗?请记住,/ 说明符具有特殊含义。它会用您的CurrentCulture DateSeparator 替换自己。
  • 是的,当我填写 10/10/1990 时它可以工作,但是当我将第一个更改为 (10-10/1990) 时,它会出现必须是一个日期,然后当我更改第二个时一到 (10-10-1990) 相同的错误消息
  • @EUDM 但是10-10/1990 与格式不匹配?
  • 是的,1990 年 10 月 10 日也没有。但是 10/10/1990 有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多