MVC JQuery不引人注目的验证

时间:2014-11-26 02:20:49

标签: c# jquery asp.net-mvc asp.net-mvc-4 fluentvalidation

如何在不显眼的验证中覆盖默认错误消息?。

我尝试使用$ .validator.unobtrusive.messages.dobvalidation来重置该验证类型的错误消息但没有任何成功。

    //DOB Validation
    jQuery.validator.unobtrusive.adapters.add("dobvalidation", function (options) {
            options.rules["dobvalidation"] = "true";
            options.messages["dobvalidation"] = options.message;
    });

    jQuery.validator.addMethod("dobvalidation",
        function (value, element, param) {
            if (value.length > 3) {
                var test = $(element).attr('data-val-dobvalidation-err1');
                $.validator.unobtrusive.messages.dobvalidation = test; // this line of code is 
                                                                          not working
                return false;
            }
            return true;
        });



public class DateOfBirthFluentValidationPropertyValidator : FluentValidationPropertyValidator
{
    public int? MinimumAge { get; set; }
    public string DateFormat { get; set; }
    public string InvalidDateFormatErrorMessage { get; set; }
    public string YoungerThanMinimumErrorMessage { get; set; }

    public DateOfBirthFluentValidationPropertyValidator(ModelMetadata metadata, ControllerContext controllerContext, PropertyRule rule, IPropertyValidator validator,
         int? minimumAge = null,  string dateFormat = null,string invalidDateFormatErrorMessage = null, string youngerThanMinimumAgeErrorMessage = null)
        : base(metadata, controllerContext, rule, validator)
    {
        MinimumAge = minimumAge;
        DateFormat = dateFormat;
        InvalidDateFormatErrorMessage = invalidDateFormatErrorMessage;
        YoungerThanMinimumErrorMessage = youngerThanMinimumAgeErrorMessage;
    }


    public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
    {
        var rule = new ModelClientValidationRule
        {
            ValidationType = "dobvalidation",
            ErrorMessage = InvalidDateFormatErrorMessage
       };

        rule.ValidationParameters.Add("err1", InvalidDateFormatErrorMessage);

        yield return rule;
    }

}

1 个答案:

答案 0 :(得分:0)

虽然它是繁琐但通常不寻常的事情,因为所有这些都是通过JS文件控制的,它会覆盖显式设置的选项。您可以参考这些链接,这些链接可能会为您提供更多信息。

Override Unobtrusive JS Validation - 1

Override Unobtrusive JS Validation - 2