我试图了解错误是否为 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
属性进行一些逻辑过滤,这看起来很奇怪。
ModelState.IsValid 正在检查验证错误。 Exception 为 null,因为这些是验证错误,而不是 json 反序列化期间抛出的异常。
try
{
var result = JsonConvert.DeserializeObject<MyModel>(jsonString);
}
catch (JsonException ex)
{
// Handle JSON parsing errors here
}
当您处于反序列化步骤时,您可以在上面的代码中捕获 Json 异常。