您可以通过定义一个继承 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 不显眼的验证使用。
此外,请务必使用 DataAnnotationsModelValidatorProvider 注册您的适配器(万无一失的是在其类的构造函数中进行)。
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyCustomValidationAttribute), typeof(FoolproofValidator));
一旦你定义了你的服务器端验证逻辑,你需要在客户端注册 jquery 不显眼的验证:
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);
});