• ASP.NET MVC验证标注的扩展-checkbox必选


    我们知道ASP.NET mvc提供一些表单的验证标注,比如必填属性RequiredAttribute

    但是这个属性不适合选择框的必选

    但是很多时候,我们却是需要一些必选的单选框

    比如网站注册的时候,需要用户同意网站的一些规定等等

    为此,我封装了一个BooleanRequiredAttribute的标注类,

    该类可以标注那些框必填

    具体类如下:

    public class BooleanRequiredAttribute : ValidationAttribute, IClientValidatable
        {
            public bool Value { get; set; }
            public override bool IsValid(object value) { res = value != null && Value; return res; }
    
            public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
            {
                ModelClientValidationRule rule = new ModelClientValidationRule
                {
                    ValidationType = "brequired",
                    ErrorMessage = FormatErrorMessage(metadata.GetDisplayName())
                };
                rule.ValidationParameters.Add("br", res);
                yield return rule;
            }
    
            public bool res { get; set; }
        }

    支持客户端和服务器端验证

    然后外貌需要添加一个前端的js验证方法

    方法也非常简单

    //布尔类型必勾选
    $.validator.addMethod("brequired", function (value, element, param) {
        return element.checked;
    });
    $.validator.unobtrusive.adapters.addSingleVal("brequired", "br");

    就几行代码,

    这样,当我们使用的时候

    只需要在实体上面进行标注就可以了

    比如:

            [BooleanRequired]
            [Display(Name = "必选同意")]
            public bool Agree { get; set; }

    然后在视图上面

    <a id="showclause" href="javascript:void(0);">网站服务条款</a>
                                @Html.CheckBoxFor(m => m.Agree)同意&nbsp;
                                @Html.ValidationMessageFor(m => m.Agree)

    最后,我们看效果

    是不是很实用呢?MVC真的挺强大的

    欢迎大家 扩展更多的这些验证类

    感谢阅读.....

  • 相关阅读:
    今天是JVM的生日,来了解下JVM的发展历史吧
    python 天天生鲜项目
    django中设置定时任务
    django-rest-framework视图和url
    rest_framework-分页
    rest_framework-序列化-1
    rest_framework-解析器
    django-rest-framework版本控制
    django-rest-framework限流
    django-rest-framework权限验证
  • 原文地址:https://www.cnblogs.com/maijin/p/4725758.html
Copyright © 2020-2023  润新知