首页 > 解决方案 > 在 ASP.NET MVC 中,如何获取在模型验证中生成验证错误的元素(从列表中)

问题描述

我有一个带有以下 Action 标头的 API 控制器:

public IHttpActionResult Post(InvoicesDTO invoices)

其中 InvoicesDTO 如下:

public class InvoicesDTO
    {
        public int IdHeader { get; set; }
        [DataType(DataType.DateTime)]
        public DateTime DateSend { get; set; }
        public List<InvoiceDTO> ListInvoices { get; set; }
    }

InvoiceDTO 是一个带有一些 DataAnnotations 验证的 POCO 类。

问题是,当发生验证错误时,我想知道 InvoicesDTO 列表中的哪个 InvoiceDTO 是产生错误的那个,以便能够执行以下操作:

if (ModelState.IsValid)
{
}
else
{    
_logger.LogError($"Validation Error at Invoice -
{ModelState.Values.First().WHATEVER_TO_GET_THE_ELEMENT_THAT_GENERATED_THE_ERROR");
}

谢谢!

标签: c#asp.net-mvcmodel-validation

解决方案


您可以遍历模型的所有属性并检查单个属性的有效性。

bool isvalid = ModelState.IsValidField("模型属性");


推荐阅读