添加MVC3非干扰式验证(addMinMax)
|
我有这样的属性:
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\");
它出什么问题了?错误在哪里?
没有找到相关结果
已邀请:
1 个回复
舶啥戚
在模型中:
还有CustomDateValidation.js中的一些Java脚本代码:
在视图中,我像这样渲染文本框:
最后一个是我使用的脚本: