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
        {
            /// <summary>
            /// 定义用户名必填
            /// </summary>
            [Required(ErrorMessage = "请输入名字")]
            public string name { set; get; }
            /// <summary>
            /// 密码
            /// </summary>
            [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
            });
        }
    }
}
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ldl_csdn_ios

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值