3

我想在我的 MVC 3 应用程序中使用MVC FoolProof Validation 。

我需要数字验证,也接受 N/A 或 n/a。所以我决定创建自己的自定义验证属性,例如NumericAllowNAAttribute,并添加一个 jQuery 验证自定义采用者方法。

我重新访问了 MVC Foolproof 并决定使用它,因为它已经有其他有用的方法构建。我也想要那些。现在我如何编写一个使用 jQuery 验证和服务器端在客户端工作的 CustomValidationAttribute?

在扩展 MVC Foolproof 上搜索谷歌我没有得到任何。

是否有人遇到过使用 jQuery 验证插件在服务器和客户端中扩展或实现这种验证工作?

4

1 回答 1

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 不显眼的验证使用。

此外,请务必使用 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);
});
于 2015-05-18T19:32:49.777 回答