我有这样的属性:
public class AgeRangeAttribute:ValidationAttribute,IClientValidatable
{
public int MinAge { get; set; }
public int MaxAge { get; set; }
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule
{
ErrorMessage = ErrorMessage,
ValidationType = "agerange"
};
if (MinAge != int.MinValue)
{
rule.ValidationParameters.Add("minage", DateTime.Now.AddYears(-MinAge).ToShortDateString());
}
if(MaxAge != int.MinValue)
{
rule.ValidationParameters.Add("maxage", DateTime.Now.AddYears(-MaxAge).ToShortDateString());
}
yield return rule;
}
}
和 JS 验证器表示:
jQuery.validator.addMethod("agerangemin", function (value, element, param) {
var date = setDate(new Date(),value);
var expected = setDate(new Date(), param);
return date <= expected;
});
jQuery.validator.addMethod("agerangemax", function (value, element, param) {
var date = setDate(new Date(), value);
var expected = setDate(new Date(), param);
return date > expected;
});
jQuery.validator.addMethod("agerangemaxmin", function (value, element, param) {
var date = setDate(new Date(), value);
var expectedMin = setDate(new Date(), param[1]);
var expectedMax = setDate(new Date(), param[0]);
return date <= expectedMin && date > expectedMax;
});
jQuery.validator.unobtrusive.adapters.addMinMax("agerange", "agerangemin", "agerangemax", "agerangemaxmin");
而且这个js不起作用(没有例外......可能已经死了& :))
但这很好用:
jQuery.validator.addMethod("agerange", function (value, element, param) {
var date = new Date();
date = setDate(date, value);
var expected = setDate(new Date, param);
return date <= expected;
});
jQuery.validator.unobtrusive.adapters.addSingleVal("agerange", "minage");
它出什么问题了?错在哪里?