这是我的视图:
@Html.TextBoxFor(o => o.JobStartDate, new { id = "dt1", @class = "input-block-level" })
@Html.ValidationMessage("JobStartDate")
和我的脚本:
$("#dt1").datepicker({ dateFormat: "dd/mm/yy" });
如果我的日期<= 12,一切正常,如果我的日期超过12,它将显示一条验证错误消息,提示“字段开始日期必须是日期。” (我正在使用jquery验证)
例如:date 16/12/2014会给我错误,而2014/12/12不会给我
这是我的观点型号:
[Required]
[DataType(DataType.Date)]
[Display(Name = "Start Date")]
public DateTime JobStartDate { get; set; }
我怀疑我的视图模型正在预期格式为mm / dd / yyyy的日期,而在日期选择器中我指定了dd / mm / yy,有没有一种方法可以告诉我的视图模型我希望使用dd / mm / yy格式,因此如果日期> = 12,则不会引发错误消息。
#1 楼
您可以查看使用jquery全球化或将以下内容添加到脚本中(当然,假定服务器区域性日期格式为'dd / MM / yyy')$.validator.addMethod('date', function (value, element) {
if (this.optional(element)) {
return true;
}
var valid = true;
try {
$.datepicker.parseDate('dd/mm/yy', value);
}
catch (err) {
valid = false;
}
return valid;
});
$('#dt1').datepicker({ dateFormat: 'dd/mm/yy' });
,请使用
@Html.ValidationMessageFor(m => m.JobStartDate)
#2 楼
这里的MVC视图模型: public DateTime? date { get; set; }
这是针对脚本的:
$('.DatePickers').datetimepicker({
timepicker: false,
format: 'd-M-Y',
scrollInput: false,
closeOnDateSelect: true
});
用于只读日期选择器的按键事件
$(".DatePickers").keypress(function (event) { event.preventDefault(); });
#3 楼
您将需要创建一个自定义验证器。您需要修改属性以采用字符串值,而不是这样public string JobStartDate {get; set; }
然后,您需要像这样创建自定义验证器
public class CheckDateAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
// Validate your Date here
}
}
此后,您将像这样装饰您的属性-
[CheckDate]
public string JobStartDate {get; set;}
这是有关自定义验证器的一个很好的教程
评论
这不会进行客户端验证(并且肯定不会解决OP问题),并且您绝对不应在日期中使用字符串!
–user3559349
2014年12月4日下午5:31