如果我们的模型具有不可为空的属性,例如:
public class MyModel {
public string Name {get;set;}
[MinLength(7, ErrorMessage = "DisplayName should be at least 7 chars long")]
public string DisplayName {get; set;]
public int Age {get;set;}
}
,如果我们将此json提交给它:
{
"name":"Bob",
"displayName":"MyNameIsBob"
}
我们将收到来自JSON.NET序列化程序异常的丑陋错误消息。
现在,我确实有一个过滤器来处理验证,并将所有错误消息(来自DataAnnotations)放入响应中。
但是,如果json.net无法反序列化-在此之前引发异常,并且非常不友好的消息最终处于模型状态。
减轻这种情况的一种方法是使用[Required]属性(对于那些真正需要的属性)使所有不可为空的属性为空。这涵盖了某些情况,但我相信甚至有很多情况,即使为nullable仍可能导致json.net异常。
是否存在一些一致的最佳实践方法来处理这些问题?
=== UPDATE ===
我的意思是说是否除了以下内容之外
已包含使用期限-它将抛出异常,并显示以下消息:“无法将{whatever错误}转换为整数:{whatever}。”
例如,如果您发送null或“ 1”作为年龄,它将抛出该错误。
现在,我知道它的两步过程是:首先进行格式化程序反序列化(并抛出这些异常),然后进行活页夹接管和数据注释错误消息。
我只是想知道如何最巧妙地将两者结合起来并避免那些难看的信息。
希望澄清