我想知道它是否可行,或者如何在我的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
public HttpResponseMessage Post(PersonViewModel person)
{
}
假设FirstName
和LastName
字段是而不是 MiddleName
。我想知道的是,如果Person
对象没有填充必填字段之一,调用会自动使用HTTP 400错误请求或类似情况回复客户端吗?
基本上我必须手动完成所有这些工作,或者是否有办法让框架自动处理标记字段,所以我没有很多必需字段的样板验证代码?
手动方式我试图避免:
if (ModelState.IsValid)
{
if (person.LastName == string.empty)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
感谢任何帮助,谢谢!
答案 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