千家信息网

MVC3如何自定义注解验证字符长度

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍MVC3如何自定义注解验证字符长度,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自定义注解(验证字符长度)需要继承ValidationAttribute类,它是
千家信息网最后更新 2025年01月19日MVC3如何自定义注解验证字符长度

这篇文章主要介绍MVC3如何自定义注解验证字符长度,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

自定义注解(验证字符长度)

需要继承ValidationAttribute类,它是一个抽象类。

需要引用命名空间:

using System.ComponentModel.DataAnnotations;

----------新建一个类(MaxWordsAttribute.cs)

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ComponentModel.DataAnnotations;namespace SchoolManageDomw.Models{    public class MaxWordsAttribute:ValidationAttribute    {        private readonly int _maxwords;                //base("{0}字符过长"):向基类的构造函数添加一个默认的错误提示信息        public MaxWordsAttribute(int maxWords):base("{0}字符过长")        {            _maxwords = maxWords;        }        ///         ///         ///         /// 要验证对象的值        /// 描述执行验证检查的上下文        ///         protected override ValidationResult IsValid(object value, ValidationContext validationContext)        {            if (value != null)            {                if (value.ToString().Length > _maxwords)                {                    //validationContext.DisplayName:字段的名称                    //FormatErrorMessage:错误消息                    var msg = FormatErrorMessage(validationContext.DisplayName);                    return new ValidationResult(ErrorMessage);                }            }            return ValidationResult.Success;        }            }}

----------给模型添加数据注解

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.Entity;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.Web.Mvc;namespace SchoolManageDomw.Models{    public class SchoolType:IValidatableObject    {        [Key]        public virtual int st_id { get; set; }                [MaxWords(10,ErrorMessage="字符过长")]        public virtual string st_name { get; set; }        public virtual List Schools { get; set; }    }}

=============================================子验证模型

是要继承接口:IValidatableObject

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.Entity;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.Web.Mvc;namespace SchoolManageDomw.Models{    public class SchoolType:IValidatableObject    {        [Key]        public virtual int st_id { get; set; }        [Required]  //不许为空        [Display(Name = "名称")]        public virtual string st_name { get; set; }        public virtual List Schools { get; set; }        #region IValidatableObject 成员        public IEnumerable Validate(ValidationContext validationContext)        {            if (st_nameConfirm.Length > 3)            {                yield return new ValidationResult("字符过长", new[] {"st_name" });            }        }        #endregion    }}

以上是"MVC3如何自定义注解验证字符长度"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0