ASP.NET Web API的模型验证与ASP.NET MVC同样,都使用System.ComponentModel.DataAnnotations。
具体来讲,好比有:
[Required(ErrorMessage="")]
[Range(0, 999)]
[Bind(Exclude="")]
[DisplayName("")]
[StringLength(1024)]
...
验证扩展能够看这里:http://dataannotationsextensions.org/
在controller中如何验证模型呢?
一般是经过ModelState.IsValid.ide
public HttpResponseMessage Post(Product product) { if(ModelState.IsValid){ // return new HttpResponseMessage(HttpStatusCode.OK); } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } }
还能够经过"面向切面"的方式,自定义一个模型验证的特性ActionFilterAttibute特性。ui
public class ValidateModelAttribute:ActionFilterAttibute { public override void OnActionExecuting(HttpActionContext actionContext) { if(actionContext.ModelState.IsValid == false) { actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState); } } }
而后须要把自定义的过滤器特性注册到默认的过滤器集合中去。spa
public static class WebApiConfig { public static void Register(HttpConfiguraiotn config) { config.Filters.Add(new ValidateModelAttribute()); } }
若是不在全局注册过滤器,咱们还能够把过滤器特性打到控制器或控制器方法上去。code
[ValidateModel] public HttpResponseMessage Post(Product product) { }