<分区>
我有一个使用 Web API 2 的 ASP.NET 应用程序。
为了强制对所有操作进行模型验证,我使用了一个过滤器,如下所示:
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
这在大多数情况下效果很好,但是当我针对 API 端点执行 POST 请求而请求正文中没有任何内容时,就好像模型验证没有启动一样。
Controller Action 采用具有三个属性的 View 模型 - 所有必需的字符串。
public class AddEntityViewModel
{
[Required]
public string Property1 { get; set; }
[Required]
public string Property2 { get; set; }
[Required]
public string Property3 { get; set; }
}
如果我只是添加一些随机数据作为请求主体,模型验证会按预期启动并拒绝请求,但如果请求主体完全为空,则模型验证通过并且我在操作中获得的模型为空。
有没有什么好的方法可以在请求体为空的情况下强制进行模型验证,从而拒绝此类请求?或者有其他方法可以解决这个问题吗?