我的模型包含两个日期属性。 我想限制他们的日期范围,所以我放置一个数据注释属性来验证它。
[Display(ResourceType = typeof(FaultManagementStrings), Name = "FaultOpenDate")]
[DataType(DataType.DateTime)]
[Range(typeof(DateTime), "1900-01-01", "2500-01-01", ErrorMessage = "Invalid Date")]
public DateTime FaultOpenDateTime { get; set; }
[Display(ResourceType = typeof(FaultManagementStrings), Name = "FaultCloseDate")]
[DataType(DataType.DateTime)]
[Range(typeof(DateTime), "1900-01-01", "2500-01-01", ErrorMessage = "Invalid Date")]
public DateTime FaultCloseDateTime { get; set; }
但客户端验证对任何有效日期显示无效... 我在这做错了什么?
答案 0 :(得分:4)
ASP.NET MVC和jQuery Validate期望的默认日期格式为MM / DD / YYYY。如果您想使用特定文化的格式:
在web.config中添加到您的<system.web
以下部分:
<globalization uiCulture="pl-PL" culture="pl-PL"/>
这将设置您的Web应用程序的服务器端文化
使用jQuery Globalize插件在客户端支持该文化,并覆盖期望MM / DD / YYYY格式的日期的默认验证器。您还应该覆盖范围验证器。
Globalize.culture('pl-PL');
jQuery.validator.methods['date'] = function (value, element) {
return this.optional(element) || Globalize.parseDate(value);
};
jQuery.validator.methods['range'] = function (value, element, param) {
var parsedValue = Globalize.parseDate(value) || Globalize.parseFloat(value),
parsedParam1 = Globalize.parseDate(param[0]) || Globalize.parseFloat(param[0]),
parsedParam2 = Globalize.parseDate(param[1]) || Globalize.parseFloat(param[1]);
return this.optional(element) || (parsedValue >= parsedParam1 && parsedValue <= parsedParam2);
};
在jQuery日期选择器中查看how to setup format