如何设置一个不引人注目的验证组?

时间:2012-10-29 12:55:36

标签: jquery asp.net-mvc unobtrusive-validation

我创建了一个MVC 4验证属性,该属性将比较代表年份范围的2个字段,以验证结束年份不是在开始年份之前。

我创建了以下JS:

jQuery.validator.unobtrusive.adapters.add(
        'yearrange', ['startyear', 'endyear'], function (options) {
            options.rules['yearrange'] = options.params;
            options.messages['yearrange'] = options.message;        
        }
    );

jQuery.validator.addMethod(
            'yearrange', function (value, element, params) {

                var startYearElementName = params.startyear;
                var endYearElementName = params.endyear;

                var startYear = $('#' + startYearElementName).val();
                var endYear = $('#' + endYearElementName).val();

                if (startYear == '' || endYear == '') {
                    return true;
                }

                return (+startYear <= +endYear);

            }, '');

我将验证属性应用于我的ViewModel中的两个属性:

[YearRange("StartYear", "EndYear", "yearRangeInvalid")]
public int StartYear { get; set; }

[YearRange("StartYear", "EndYear", "yearRangeInvalid")]
public int EndYear { get; set; }

我不想使用摘要验证消息。

当更改一个字段时,我可以使用验证组来触发两个字段的重新验证吗?

可以在上面的adapters.add回调中进行配置吗?

我没有成功尝试类似的事情:

jQuery.validator.unobtrusive.adapters.add(
        'yearrange', ['startyear', 'endyear'], function (options) {
            options.rules['yearrange'] = options.params;
            options.messages['yearrange'] = options.message;

            jQuery.validator.groups[options.params.startyear] = "yearrange";
            jQuery.validator.groups[options.params.endyear] = "yearrange";

        }
    );

0 个答案:

没有答案