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

标签 javascript c# asp.net-mvc validation unobtrusive-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 with example

关于javascript - validate.unobtrusive.js,无法显示客户端验证消息,但它适用于表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625534/

相关文章:

javascript - 当表单元素离开视口(viewport)后,将键盘焦点从表单元素上移除

javascript - Jquery将表格导出到csv隐藏表格单元格

c# - 在运行时替换 web.config appsettings 中的值(用于 Active Directory 身份验证)

javascript - 谷歌地图和 JavaFX : Display marker on the map after clicking JavaFX button

javascript - 是否可以在 Jquery 自动完成中执行此操作?

javascript - 如何让 JavaScript 继续使用 ResonseText 数据

C# 库根据您自己的数据库、facebook、twitter、OpenID 对用户进行身份验证,

c# - 有没有办法在表达式树中设置 'DeclaringType'?

c# - 在 linq 中连接字符串时获取 null

c# - 计算我的 ASP.NET MVC 项目中来自不同部门的相同产品名称的总和