3

我想知道是否有可能,或者如何将我的类上用作 Web API 调用的参数的字段标记为必需?我显然可以在收到消息后手动执行此操作,但我希望管道中内置了一些东西(比如在 MVC 中结合使用必需字段注释的 jQuery 自动返回到显示必需字段符号的 UI)所以我不必手动检查所有内容。

假设我有以下 ViewModel 类:

public class PersonViewModel
{
  public string FirstName {get; set;}

  public string MiddleName {get; set;}

  public string LastName {get; set;}

}

这是我在一个简单的 Post 方法PersonController

public HttpResponseMessage Post(PersonViewModel person)
{


}

假设FirstNameandLastName字段是必需的,但不是 MiddleName。我想知道的是,如果Person对象没有填充所需的字段之一,调用是否会自动以 HTTP 400 错误请求或类似的方式响应客户端?

基本上我必须手动完成所有这些工作,还是有办法让框架自动处理带注释的字段,所以我没有很多用于必填字段的样板验证代码?

我试图避免的手动方式:

if (ModelState.IsValid)
{
  if (person.LastName == string.empty)
  {
     return Request.CreateResponse(HttpStatusCode.BadRequest);
  }

}

任何帮助表示赞赏,谢谢!

4

1 回答 1

6

WebAPI 确实具有验证功能。您应该能够将 FirstName 和 LastName 属性标记为 [Required],然后使用此博客文章底部的操作过滤器发回适当的响应:

http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx

您可以在此处阅读有关 WebAPI 验证的更多信息:

http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api

于 2013-01-29T17:09:08.533 回答