如何使用Foolproof的ModelAwareValidationAttribute进行不显眼的客户端验证

时间:2013-10-28 20:50:25

标签: c# asp.net asp.net-mvc-3 unobtrusive-validation foolproof-validation

我正在尝试使用MVC Foolproof验证框架(http://foolproof.codeplex.com/),但我遇到了ModelAwareValidationAttribute类的问题。

当我添加自定义验证属性时,它适用于服务器端模型验证,但不适用于客户端。

如果我使用框架提供的内置属性之一,客户端不显眼的验证工作,所以我知道(或者至少我认为我知道)我已经加载了正确的javascript库。

有没有人使用此框架创建自定义验证属性,它是否适用于客户端不显眼的验证?如果是这样,你做了什么让它发挥作用?

我正在使用Asp.Net MVC 3,以防万一。

1 个答案:

答案 0 :(得分:3)

基于http://foolproof.codeplex.com/SourceControl/latest#Foolproof/Client Scripts/mvcfoolproof.unobtrusive.js,您可以将自定义客户端验证规则添加为服务器端兄弟。

我在项目中所做的是扩展该文件的万无一失的基础。

示例代码:

(function () {

jQuery.validator.addMethod("foo", function (value, element, params) {
    //validation code...
});

// code based on link
var setValidationValues = function (options, ruleName, value) {
    options.rules[ruleName] = value;
    if (options.message) {
        options.messages[ruleName] = options.message;
    }
};

var $Unob = $.validator.unobtrusive;

$Unob.adapters.add("foo", ["dependentproperty", "dependentvalue", ...(add more parameters if you want)], function (options) {
    var value = {
        dependentproperty: options.params.dependentproperty,
        dependentvalue: options.params.dependentvalue,
    };
    setValidationValues(options, "foo", value);
});
})();

我希望能帮到你!