我有一个带属性的viewmodel
public DateTime StartTime { get; set; }
我想将jquery datetime plugin应用于该属性
问题是我不能强制jquery插件格式化日期格式
dd.mm.yy HH:mm:ss
应代表
01.01.1999 00:00:00
如何在模型中修饰DateTime prooperty以匹配jquery插件中的这种格式?
更新: 我试过以下:
$(document).ready(function () {
$('.dateTimePicker').datetimepicker({
timeFormat: "HH:mm:ss",
dateFormat: 'dd.mm.yy',
});
});
和内部模型来装饰属性
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:dd.MM.yyyy HH:mm:ss}")]
但问题仍然存在。
在启用的客户端验证中,我获得了The field XXXX must be a date.
,并且当客户端验证被禁用时,我会使用默认值为0年的服务器端datetime属性(就像没有选择任何内容一样)。
答案 0 :(得分:0)
您可以在评论中提到@StephenMuecke创建自己的验证方法。 我会建议采用不同的方法,并推荐 datejs 库,这位老兄做得很好,图书馆虽然很轻,但功能齐全,可以为您节省大量的时间。< / p>
回到你的问题: 你有JQuery日期时间格式的代码是正确的,你应该保留它,这将确保控件本身的格式是正确的:
$('#StartTime').datetimepicker({
dateFormat: "dd.mm.yy",
timeFormat: "HH:mm:ss" });
对于验证,您可以借助 datejs ParseExact()
方法创建自己的验证例程。您的代码应如下所示:
jQuery.validator.addMethod("MyDateTimeFormat", function(value, element) {
return Date.parseExact(value, "dd.MM.yyyy HH:mm:ss");
},"Please provide the correct date time format");
然后你应该将验证器绑定到页面中的控件,你的代码应该是这样的:
form.validate({
rules : {
StartTime : { MyDateTimeFormat: true }
}
});
其中StartTime
是TextBox
的ID,而MyDateTimeFormat
是我们自定义验证的名称。
这里有.net Fiddle的例子。