我正在尝试在 Web API 中实现自定义验证。加洛韦视频中有关该主题的代码似乎已更改。我确实下载了代码,创建操作过滤器的方式是这样的:
public class ValidationActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest,
actionContext.ModelState);
}
}
}
当我将错误数据发布到我的 api 时,返回的是:
{"Message":"The request is invalid.","ModelState":{"user":["First name cannot start with A"]}}
注意 ModelState 没有显示导致错误的单个字段(如 user.FirstName)。
当我运行他们的应用程序时,ModelState 确实有字段信息(comment.Author):
{"Message":"The request is invalid.","ModelState":{"comment.Author":["Author is too long! This was validated on the server."]}}
我有相同的动作过滤器和非常相似的 post web api。为什么我的错误没有显示字段级别的详细信息?