繁体   English   中英

validate.unobtrusive.js,无法显示客户端验证消息,但可用于表单验证

[英]validate.unobtrusive.js ,not able to show client side validation message,however it works on form validation

<script type="text/javascript">


jQuery.validator.addMethod("mustbetrue", function (value, element, param) {
    return element.checked;
});
jQuery.validator.unobtrusive.adapters.addBool("mustbetrue", "required");

那是我的脚本,C#代码是...

public class mustbetrueAttribute : ValidationAttribute, IClientValidatable // IClientValidatable for client side Validation
    {
        public bool chkbox { get; set; }
        public override bool IsValid(object value)
        {
            if (value is bool)
                return (bool)value;
            else
                return false;
        }
        // Implement IClientValidatable for client side Validation
        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {

             var modelClientValidationRule = new ModelClientValidationRule
             {
                 ValidationType = "mustbetrue",
                 ErrorMessage = FormatErrorMessage(metadata.DisplayName)
             };
             modelClientValidationRule.ValidationParameters.Add("mustbetrue", chkbox);
             yield return modelClientValidationRule;
            //return new ModelClientValidationRule[] { new ModelClientValidationRule { ValidationType = "checkbox", ErrorMessage = this.ErrorMessage } };
            //yield return new ModelClientValidationRule
            //{
            //    ErrorMessage = "You must accept Terms and Condition",
            //    //Given Validation Type will be Used for Client side Validation in Unobtrusive Jquery
            //    ValidationType = "mustbetrue"
            //};
        }

    }

呈现的html:

<li>
    <label for="TermsAccepted">Terms and Conditions.</label>
    <input data-val="true" data-val-mustbetrue="Please Accept the Terms &amp; Conditions" data-val-mustbetrue-mustbetrue="False" data-val-required="The Terms and Conditions. field is required." id="TermsAccepted" name="TermsAccepted" type="checkbox" value="true" />
    <input name="TermsAccepted" type="hidden" value="false" />
</li>

您忘记添加:

$.validator.addClassRules("mustbetrue", {
    mustbetrue: true
});

这是一个带有示例jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM