为了账号安全,请及时绑定邮箱和手机立即绑定

MVC3----自定义客户端验证

标签:
JavaScript


1,自定义验证类:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ComponentModel.DataAnnotations;using System.Web.Mvc;namespace SchoolManageDomw.Models{    public class ZDMaxLength : ValidationAttribute,IClientValidatable    {        private int MaxLength;        public ZDMaxLength(int maxlength)            : base("{0}字符长度过长")        {            this.MaxLength = maxlength;        }        /// <summary>        /// 服务端验证方法        /// </summary>        /// <param name="value"></param>        /// <param name="validationContext"></param>        /// <returns></returns>        protected override ValidationResult IsValid(object value, ValidationContext validationContext)        {            if (value != null)            {                if (Convert.ToInt32(value.ToString().Length) > MaxLength)                {                    return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));                }            }            return ValidationResult.Success;        }        #region IClientValidatable 成员        /// <summary>        /// 实现IClientValidatable接口。客户端验证方法        /// </summary>        /// <param name="metadata"></param>        /// <param name="context"></param>        /// <returns></returns>        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)        {            var rule = new ModelClientValidationRule();            rule.ErrorMessage = FormatErrorMessage("客户端" + metadata.GetDisplayName());            rule.ValidationType = "zdmaxlength";            rule.ValidationParameters.Add("maxlength", MaxLength);            yield return rule;        }        #endregion    }}


2,使用自定义验证类:

[ZDMaxLength(3)]public string Name { get; set; }


3,视图代码:

①:需要引用两个脚本和一个自定义脚本:

<script type="text/javascript"  class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>

<script type="text/javascript"  class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>

<script type="text/javascript"  class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@Url.Content("~/Scripts/zd.js")"></script>


②:zd.js

////代码提示///<reference path="jquery-1.5.1-vsdoc.js" />///<reference path="jquery.validate.js" />///<reference path="jquery.validate.unobtrusive.js" />//zdmaxlength:验证器名称,需要匹配ValidationType//value:输入值//element:输入元素//zdmaxlength:验证参数$.validator.addMethod("zdmaxlength", function (value, element, zdmaxlength) {    if (value) {        if (value.toString().length > zdmaxlength) {            alert(value.toString().length + "." + zdmaxlength);            return false;        }    }    return true;});$.validator.unobtrusive.adapters.addSingleVal("zdmaxlength", "maxlength");


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消