在我的网络应用程序(asp.new mvc)中,我尝试对日期字段进行验证。
如果我使用这个
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? PeriodBeginFrom { get; set; }
或者
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime? PeriodBeginFrom { get; set; }
它有效。但是,如果我尝试分开使用'。'分隔符
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime? PeriodBeginFrom { get; set; }
我有一个问题。 jQuery验证说如果我尝试'01 .01.2001',我必须输入日期。
这是视图
<div class="ElementDiv">
@Html.LabelFor(m => m.Filter.PeriodBeginFrom, new { @class = "Labels" })
@Html.EditorFor(m => m.Filter.PeriodBeginFrom, new { @class = "TextBoxes" })
@Html.ValidationMessageFor(m => m.Filter.PeriodBeginFrom, null, new { @class = "Errors" })
</div>
为什么?与其他所有分隔符一起使用。 “问题”是什么问题。 separatior?
更新1:似乎验证无法正常运行。如果我在我的模型中有这个属性
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? PeriodBeginFrom { get; set; }
我们将DateTime对象传递给模型,它将在文本框中显示为'。'比如'12 .12.2012'并不像我在等待'2012年12月12日'。希望你能给我一些想法。
答案 0 :(得分:1)
您正在查看日期组件。但请记住,时间组件可以包括秒和小数秒,其间为中间。由于日期和时间经常合并,如果将这段时间视为特殊角色,我不会感到惊讶。
更新
我浏览了以下文档链:
DisplayFormatAttribute.ApplyFormatInEditMode Property
DisplayFormatAttribute.DataFormatString Property
Custom Date and Time Format Strings
我希望看到句点字符在格式字符串中有特殊含义。相反,文档没有专门列出句点字符。这意味着它应该属于“任何其他字符”的类别,因此,“字符被复制到结果字符串不变。”
然而,我不相信。分数秒出现在23:59:59.999之类的时间成分中,我怀疑对于时期特征没有未记载的特殊处理。
答案 1 :(得分:1)
格式问题不是ASP标记和字段,而是使用不显眼的验证jquery库。我不得不为我的日期格式重载不显眼的JavaScript验证方法。更多细节在这里 MVC DateTime validation - UK Date format