C#编程之C# Web 数据注解Data Annotations、模型状态ModelState、数据验证
小标 2018-10-22 来源 : 阅读 2358 评论 0

摘要:本文主要向大家介绍了C#编程之C# Web 数据注解Data Annotations、模型状态ModelState、数据验证,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程之C# Web 数据注解Data Annotations、模型状态ModelState、数据验证,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

C#中的模型状态与数据注解,为我们提供了很便利的请求数据的验证。   1. ModelState ModelState在进行数据验证的时候很有用的,它是: 1)验证数据,以及保存数据对应的错误信息。 2)微软的一种DRY(Don‘t Repeat Yourself)设计,通过ModelState可以做服务端验证,同时可以配合jquery validation生成前端数据验证   2. 数据注解Data Annotations、数据验证 如果我们想要添加数据验证,首先要创建我们的数据验证实体。 比如,我们有一个方法,是保存用户信息,而输入实体是SaveUserInfoInput using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace FeiDu.Models.UserModels
{

    /// 


    /// 保存用户信息
    /// 


    public class SaveUserInfoInput
    {

        /// 


        /// 名字
        /// 


        [Required(ErrorMessage = "请输入名字")]
        public string Name { get; set; }

        /// 


        /// 手机号码
        /// 


        [Required(ErrorMessage = "请输入手机号码")]
        [RegularExpression(@"^1[1|2|3|4|5|6|7|8|9][0-9]\d{8}$", ErrorMessage = "手机号格式错误")]
        public string Phone { get; set; }

        /// 


        /// 省
        /// 


        [Required(ErrorMessage = "请输入省")]
        public string Province { get; set; }

        /// 


        /// 市
        /// 


        [Required(ErrorMessage = "请输入市")]
        public string City { get; set; }

        /// 


        /// 地址
        /// 


        [Required(ErrorMessage = "请输入地址")]
        public string Address { get; set; }

        /// 


        /// 手机验证码
        /// 


        [Required]
        public string PhoneCode { get; set; }


    }
}
从上面可以看到,我们添加了数据验证的注解,Required、RegularExpression
再看看我们的Controller中的保存用户信息的方法:
public ResponseMessageObj SaveUserInfo(SaveUserInfoInput input)
当我们传数据的时候,发现输入验证类SaveUserInfoInput 并没有用,因为我们还没加入ModelState的验证。
 
3. 加入全局的ModelState的验证首先我们建一个类GlobalActionFilterAttribute,继承ActionFilterAttribute,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;

namespace FeiDu.Common
{

    /// 


    /// 验证信息
    /// 


    public class GlobalActionFilterAttribute:ActionFilterAttribute
    {

        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            if (actionContext.ModelState.IsValid == false)
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);               
            }
        }
   
    }
}
 
然后在WebApiConfig类的Register方法中,注册全局FilterAttribute
//注册Global Filter
config.Filters.Add(new GlobalActionFilterAttribute());
然后我们再运行,发现数据注解的验证可以了。
当然,我们也可以在固定的方法上面加入数据验证,而不需要注册全局的数据验证。
 
4. 数据注解demo
1)非空验证  [Required]
2)长度验证 [StringLength(100, MinimumLength = 10)]



3)正则表达式验证 [RegularExpression("your expression")]
4)值范围验证 [Range(10, 100)]
5)对比验证 [Compare("Name")]

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程