了解 ModelState 验证错误类型的正确方法是什么?

问题描述 投票:0回答:1

我试图了解错误是否为 JSON 格式(缺少逗号等),或者缺少必填字段(模型验证),并向用户返回定义的自定义错误之一,而不显示 ModelState 的错误消息。

if (!ModelState.IsValid) 
{
   var errors = ModelState.Values.SelectMany(x => x.Errors);
}

我尝试寻找这些错误的例外情况

var jsonErrors = errors.Where(e => e.Exception is JsonException).ToList();

但是

Exception
属性始终是
null
。怎么会? 目前唯一的方法似乎是对
ErrorMessage
属性进行一些逻辑过滤,这看起来很奇怪。

c# asp.net-core modelstate
1个回答
0
投票

ModelState.IsValid 正在检查验证错误。 Exception 为 null,因为这些是验证错误,而不是 json 反序列化期间抛出的异常。

try
{
    var result = JsonConvert.DeserializeObject<MyModel>(jsonString);
}
catch (JsonException ex)
{
    // Handle JSON parsing errors here
}

当您处于反序列化步骤时,您可以在上面的代码中捕获 Json 异常。

© www.soinside.com 2019 - 2024. All rights reserved.