C# DataAnnotations简单的数据注解示例

数据注解,个人认为就是用于数据模型的数据校验使用(这是其中的一个用处)
在这里,我将其用于替换原来接口中繁琐的if判断数据校验。
命名空间:using System.ComponentModel.DataAnnotations;
常用校验:
1.Required :属性值必须非空或者不能只是空格,如果允许全空格可以[Required(AllowEmptyStrings = true)]

2.DisplayName :显示名 – 定义表单字段的提示名称

3.StringLength :字符串长度不能超过给定的最大长度,也可以指定最小长度:[StringLength(10, MinimumLength=2)]

4.Range :范围 – 数字的可输入范围[Range(10, 20)] ,属性值必须在指定的数值范围内,可以使用数值类型的最大最小值比如int.MinValue、int.MaxValue

5.Bind :绑定 – 列出在将请求参数绑定到模型的时候,包含和不包含的字段

6.ScaffoldColumn :支架列 - 在编辑表单的时候,需要隐藏起来的的字符 [ScaffoldColumn(true|false)]

7.Compare: 比较 - 与制定的字段值进行比较 具体见代码 [Compare(“MyOtherProperty”)]两个属性必须相同值,比如我们要求用户重复输入两次邮件地址时有用

8.RegularExpre ssion: 正则表达式匹配,字符串值必须匹配正则表达式,默认大小写敏感,可以使用(?i)修饰符关闭大小写敏感,比如[RegularExpre ssion("(?i)mypattern")]

9.DataType :在前端显示的文本框类型

  1. Remote :服务端验证

  2. [Editable(false)] //放在主键上显示不可修改

直接上代码:
这里注意要引进MVC,在Nuget里面安装

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;

namespace DataAnnotations.Web.Areas.Api.Controllers
{
    public class TestController : Controller
    {
        public class TestModel
        {
            /// 
            /// 定义用户名必填
            /// 
            [Required(ErrorMessage = "请输入名字")]
            public string name { set; get; }
            /// 
            /// 密码
            /// 
            [Required]
            [StringLength(128, MinimumLength = 6, ErrorMessage = "密码不能低于六位数")]
            public string pwd { set; get; }
            [Required]
            [System.ComponentModel.DataAnnotations.Compare("pwd", ErrorMessage = "两次密码输入不一致")]
            public string rpwd { set; get; }
            //定义邮件为必填,且满足邮件格式
            [Required]
            [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
            public string email { get; set; }
            [Required]
            [Range(1, 100)]
            //定义年纪在1到100之间
            public int age { set; get; }
        }
        // GET: Api/Test
        [HttpPost]
        public ActionResult Index(
            TestModel model)
        {
            if (!ModelState.IsValid)
            {
                var xx = ModelState.Values
.SelectMany(v => v.Errors);
                foreach (var ss in xx)
                {
                    Console.WriteLine(ss.ErrorMessage);
                }
                var message = string.Join(" |", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage));
                return Json(new
                {
                    msg = message,
                    errcode = 0
                });
            }
            return Json(new
            {
                msg = "提交成功",
                errcode = 0
            });
        }
    }
}

你可能感兴趣的:(c#)