【发布时间】:2013-08-28 21:11:42
【问题描述】:
在我的 ASP.NET MVC API 应用程序中,如果缺少一些 Required 字段,我可以返回有用的 ErrorResponse:
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
-
"Message": "The request is invalid.",
"ModelState": {
"myModel.FooA": [
"The FooA is required."
],
"myModel.FooC": [
"The FooC property is required."
],
"myModel.FooD": [
"The FooD property is required."
]
}
但是,正如 this answer 所确认的,NULL 模型将验证。由于我不允许这样做,我如何返回同样有用的错误响应,说明 all 所需的值?我知道我可以为每个属性手动添加一个 ModelError,但我怀疑CreateErrorResponse 可以为我执行此操作。
【问题讨论】:
-
嗨@Jonathan。上面的参考有一个检查模型是否不为空。如果它为空,您可以查看以下建议。
-
如果您的对象为空,您可以致电
Controller.ValidateModel(new MyClass())吗? (注意,ValidateModel是Controller类的一个方法)。见stackoverflow.com/questions/6360087/… -
没有自动的方法来实现你想要的。您需要自定义模型绑定器
-
如果
ModelState.IsValid()在空值上测试false,那么当页面加载时,即使在用户开始输入表单之前,您也会立即遇到错误。实际上是早期验证框架中的常见问题。