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

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"  src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>

<script type="text/javascript"  src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>

<script type="text/javascript"  src="@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");
时间: 2024-11-11 09:18:55

MVC3----自定义客户端验证的相关文章

【SharePoint】SharePoint 2013 使用PreSaveAction自定义客户端验证

使用PreSaveAction函数实现客户端自定义验证. 例:[项目编号]为空时,必须填写[责任者]项.(其中[项目编号]为单行文本框,[责任者]为用户/组选择框.) function PreSaveAction(){ var porjectNo = $("[id$=TextField][Title='项目编号']").val(); var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='责任者']");

数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 &lt;二十八&gt;

一.HtmlHelper.MVC快速增删改查 MVC 在MVC里面请求首先到控制器-->然后 -->数据库数据放在APP_DATE文件夹里, -->js.css文件放在content文件夹里 -->控制器放在Controllers里,控制器要以controller结尾 控制器下面的所有方法都称为action 2)webform跟 aspnet MVC:区别请求的地址不一样了 MVC请求的是控制器下面的action webform:aspx页面或者是一般处理程序 -->a标签

ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)

ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttribute应用到Model的类型或者属性上即可.对于自定义验证,我们也只需要定义相应的Validation 就可以了,不过服务端验证比较简单,而客户端验证就要稍微复杂一些,本文提供一个简单的实例说明在ASP.NET MVC中实现自定义验证的基本步骤.[源代码从这里下载] 一.AgeRangeAttr

Yii CActiveForm 客户端验证(enableClientValidation)和自定义验证

使用Yii的CActiveForm默认使用服务器端模型(model)的rules规则验证数据. 但这会导致无谓的请求提交,比较好的方式是为了用户体验在客户端也验证,而为了安全性,在服务器端和数据库也做验证和限制. 要启用CActiveForm的客户端验证,可以使用enableClientValidation参数: [php] view plain copy <?php $form=$this->beginWidget('CActiveForm', array( 'enableClientVal

ASP.NET MVC3中Model验证

原文:ASP.NET MVC3中Model验证 概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各个字段的验证. 这些特性用于定义常见的验证模式,例如范围检查和必填字段.而 DataAnnotations 特性使 MVC 能够提供客户端和服务器验证检查,使

asp.net mvc 客户端验证

插件 jQuery unobtrusive Validation @Html.TextBoxFor(x=>x.UserName) [StringLength(7,MinimumLength=2, ErrorMessage="账号长度最小2 最大7")]public string UserName { get; set; } 生成 <input data-val="true" data-val-length="UserName length sh

客户端验证的极品--jQuery.validator

最近在做一个用户注册登录的页面,资料查寻过程中发现了一个非常不错的客户端验证的极品-jQuery.validate.它是著名的JavaScript包jQuery的一个插件,其实它还有其它的一些插件应该都爽,有待慢慢来学习 官方地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ jQuery用户手册:http://jquery.org.cn/visual/cn/index.xml 开发使用起来非常简单明了, 我的代码:

Lync开发实例3&mdash;自定义客户端

这节来简单说明下自定义客户端的开发方法. 首先我们打开Lync SDK的以下Sample: SignInUISuppressionMode 进入目录后,可以发现EnableUISuppressionMode.reg这个注册表文件. 打开发现是往注册表导入以下信息. Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Lync] "UISuppressionMode"

asp.net mvc3 的数据验证(一)

原文:asp.net mvc3 的数据验证(一)      对于web开发人员来说,对用户输入的信息进行验证是一个重要但是繁琐的工作,而且很多开发者都会忽略.asp.net mvc3框架使用的是叫做“数据注解”(DataAnnotations)的方式进行数据验证. 这种方式允许程序在客户端和服务器端进行双重验证(asp.net的数据验证控件也是双重验证的).双重验证的好处是 客户端验证会直接相应用户,不用提交表单,也就减轻了服务器的压力还提高了用户体验:而服务器端验证是确保数据的有效性和完整性,

ASP.NET MVC的客户端验证:jQuery的验证

http://www.cnblogs.com/artech/archive/2012/06/17/client-validation-01.html 之前我们一直讨论的Model验证仅限于服务端验证,即在Web服务器根据相应的规则对请求数据实施验证.如果我们能够在客户端(浏览器)对用户输入的数据先进行验证,这样会减少针对服务器请求的频率,从而缓解Web服务器访问的压力.ASP.MVC 2.0及其之前的版本采用ASP.NET Ajax进行客户端验证,在ASP.NET MVC 3.0中,jQuery