【问题标题】:How to get all Errors from ASP.Net webAPI modelState at once?如何一次从 ASP.Net webAPI modelState 中获取所有错误?
【发布时间】:2020-11-19 17:37:59
【问题描述】:

我正在尝试使用数据注释验证我的模型,但不幸的是,例如,我无法一次获得所有验证错误

下面是我的模型和 API

public class Data 

     {
        [Range(1, int.MaxValue, ErrorMessage = "TransactionId value must be greater than zero")]
        public int TransactionId { get; set; }
        [Range(typeof(DateTime), "1/1/1900", "1/1/2099", ErrorMessage = AppConstants.InvalidDate)]
        public DateTime TransactionCreationDate { get; set; }
        [Range(typeof(DateTime), "1/1/1900", "1/1/2099", ErrorMessage = AppConstants.InvalidDate)]
        public DateTime educationYearStart { get; set; }
        [Range(typeof(DateTime), "1/1/1900", "1/1/2099", ErrorMessage = AppConstants.InvalidDate)]
        public DateTime educationYearDate { get; set; }
        [Required]
        public string Name { get; set; }
        public List<Marks> marks { get; set; }
 }
 [HttpPost]
        [Route("create/marks")]
        public IActionResult Add([FromBody]Data model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            return Ok("Created Successfully");
        }
    }

我的意见

{
    "transactionId": 0,
    "transactionCreationDate": "2021-08-31T22:37:57.5311707+05:30",
    "educationYearStart": "",
    "educationYearYearEnd": "2021-08-31T22:37:57.5311707+05:30",
    "name":"sss"
    "stuDetails": [
        {
            "subjectCode": "Engilsh",         
            "totalMarks": 100,
            "Marks": 80
        },
         {
            "subjectCode": "Maths",         
            "totalMarks": 100,
            "Marks": 70
        },
    ]
}

我得到以下输出:

“交易创建日期”:[ “输入无效。” ]

但我期待类似的东西:

“交易创建日期”:[ “输入无效。” ] , "TransactionId":["TransactionId 值必须大于零"]

如何在 c# webAPI 中一次获取所有验证错误?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api c#-4.0


    【解决方案1】:

    这样做:

    foreach (ModelState modelState in ViewData.ModelState.Values) {
    foreach (ModelError error in modelState.Errors) {
        .....
    }
    

    }

    现在您可以连接错误或对它们执行任何您喜欢的操作并将它们返回到return BadRequest。

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2012-08-19
      • 2021-04-09
      相关资源
      最近更新 更多