我正在使用标准模型验证属性(例如必需)作为针对无效模型的第一道防线,稍后我将使用标准模型验证属性无法完成其他检查。
我有一个ActionFilterAttribute,我检查模型状态,空模型属性等等。
这里有什么奇怪的是以下
在方法OnActionExecuting中我们有HttpActionContext,并且有ModelState属性,它具有属性IsValid,指示模型是否有效(不包括模型属性为null的情况,但稍后我会介绍...)。因此,当模型无效时,比actionContext.ModelState.First()。Value.Errors(ModelError的集合)包含所有模型验证错误。因此,ModelError包含ErrorMessage和Exception属性,当我检查每个属性时,ErrorMessage未初始化但Exception属性已初始化并包含验证失败的详细信息。此外,ModelError类有3个构造函数:
public ModelError(Exception exception);
public ModelError(string errorMessage);
public ModelError(Exception exception, string errorMessage);
所以看起来由于某种原因,第一个被框架调用,而不是最后一个。
为什么会这样?我能做些什么才能让ErrorMessage初始化?
此致 诺瓦克