【问题标题】:Extending MVC FoolProof validation扩展 MVC FoolProof 验证
【发布时间】:2012-12-24 00:05:53
【问题描述】:

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

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

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

搜索 google 关于扩展 MVC Foolproof 我没有得到任何东西。

有没有人遇到过扩展或实现这种 使用 jQuery 验证插件在服务器和客户端进行验证?

【问题讨论】:

    标签: regex asp.net-mvc asp.net-mvc-3 validation asp.net-mvc-validation


    【解决方案1】:

    您可以通过定义一个继承 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);
    });
    

    【讨论】:

    • 您还需要使用 Foolproof 注册属性,例如static MyCustomValidationAttribute() { Register.Attribute(typeof(MyCustomValidationAttribute)); }.
    猜你喜欢
    • 2016-11-15
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多