如何在ViewModel上创建Web API调用所需的字段?

时间:2013-01-29 16:58:24

标签: asp.net-web-api

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

假设我有以下ViewModel类:

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

  public string MiddleName {get; set;}

  public string LastName {get; set;}

}

以下是PersonController

上的简单Post方法
public HttpResponseMessage Post(PersonViewModel person)
{


}

假设FirstNameLastName字段是而不是 MiddleName。我想知道的是,如果Person对象没有填充必填字段之一,调用会自动使用HTTP 400错误请求或类似情况回复客户端吗?

基本上我必须手动完成所有这些工作,或者是否有办法让框架自动处理标记字段,所以我没有很多必需字段的样板验证代码?

手动方式我试图避免:

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

}

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分: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