我想在我的MVC 3应用程序中使用 MVC FoolProof Validation 。
我需要数字验证,也接受N / A或n / a。所以我决定创建自己的自定义验证属性,如 NumericAllowNAAttribute ,并添加一个jQuery验证自定义采用者方法。
我重新访问MVC Foolproof并决定使用它,因为它已经有其他有用的方法构建。我也想要那些。现在我如何编写一个使用jQuery validate和Server端在客户端工作的CustomValidationAttribute?
搜索谷歌扩展MVC Foolproof我没有得到任何。
是否有人遇到过延伸或实施此类问题 验证在服务器和客户端使用jQuery验证插件吗?
答案 0 :(得分:4)
你可以通过定义一个继承ContingentValidationAttribute的新属性(或者万无一失的其他属性之一,但是大陆非常接近准系统)来扩展万无一失的MVC。
您需要定义以下方法覆盖。
public override bool IsValid(object value, object dependentValue, object container)
protected override IEnumerable<KeyValuePair<string, object>> GetClientValidationParameters()
public override string ClientTypeName
ClientTypeName字符串值由jquery unobtrusive验证使用。
另外,请务必使用DataAnnotationsModelValidatorProvider注册适配器(在类的构造函数中使用它是万无一失的。)
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyCustomValidationAttribute), typeof(FoolproofValidator));
一旦定义了服务器端验证逻辑,就需要在客户端注册jquery unobtrusive验证:
jQuery.validator.addMethod("clienttypenameyouemitontheserver", function(value, element, params) {
// perform your checks here and return true or false
return true;
});
var $Unob = $.validator.unobtrusive;
$Unob.adapters.add("clienttypenameyouemitontheserver", ["param1", "param2", "paramZ"], function (options) {
var value = {
param1: options.params.param1,
param2: options.params.param2,
paramZ: options.params.paramZ
};
setValidationValues(options, "clienttypenameyouemitontheserver", value);
});