Asp.Net Core webApi项目 自定义数据注释特性 进行模型验证

//自定义特性 重写ValidationAttribute的IsValid
public class Validate : ValidationAttribute
    {
        public int NotNum { get; set; }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var result = ValidationResult.Success;
            
//逻辑代码
            if (value as int? == NotNum)
            {
                result = new ValidationResult(ErrorMessage);
            }

            return result;
        }
    }
//模型
[Serializable]
    public class TestModel
    {

        [Range(0, 3, ErrorMessage = "0至3的范围")]
        [Validate(NotNum = 5 , ErrorMessage ="不能为5")]
        public int D { get; set; }

        [Range(0, 7, ErrorMessage = "0至7的范围")]
        [Validate(NotNum =8, ErrorMessage = "不能为8")]
        public int B{ get; set; }

    }

如果测试时,传入的值不符合你的条件,就会返回ErrorMessage。

不过需要注意的是该数据验证只能用于 ApiController,mvc的Controller无效。例如下

[ApiController]
    public class ValuesController : ControllerBase
    {}
//控制器

[HttpPost , Route("gdrr")]
        public string Gdr2(TestModel model)
        {
            return model.D+"";
        }

asp.net core 框架有自带的数据模型验证特性如下:

[RegularExpression(@"^[A-Z]+[a-zA-Z0-9""'\s-]*$")]

[StringLength(60, MinimumLength = 3)]

[Range(1, 100)]

[Required]

   

 如果非要在MVC中进行模型验证,且验证失败时返回400响应,则需在设置完验证特性后,在控制器的action中,加上一个验证,即可像apicontraoller那样,返回验证失败的响应了。如下:

[HttpGet("gdr")]
        public ActionResult<string> GetDifferResult([Validate( ErrorMessage = "范围错误")]int d)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            return "  -   " + d;
        }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值