ASP.NET Web API的模型驗證與ASP.NET MVC一樣,都使用System.ComponentModel.DataAnnotations。具體來說,比如有:[Required(ErrorMessage="")][Range(0, 999)][Bind(Exclude="")][Disp
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.
public HttpResponseMessage Post(Product product) { if(ModelState.IsValid){ // return new HttpResponseMessage(HttpStatusCode.OK); } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } }
還可以通過"面向切麵"的方式,自定義一個模型驗證的特性ActionFilterAttibute特性。
public class ValidateModelAttribute:ActionFilterAttibute { public override void OnActionExecuting(HttpActionContext actionContext) { if(actionContext.ModelState.IsValid == false) { actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState); } } }
然後需要把自定義的過濾器特性註冊到預設的過濾器集合中去。
public static class WebApiConfig { public static void Register(HttpConfiguraiotn config) { config.Filters.Add(new ValidateModelAttribute()); } }
如果不在全局註冊過濾器,我們還可以把過濾器特性打到控制器或控制器方法上去。
[ValidateModel] public HttpResponseMessage Post(Product product) { }