码迷,mamicode.com
首页 > Windows程序 > 详细

ASP.NET Web API模型验证以及异常处理方式

时间:2016-02-27 23:33:32      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

 

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)
{

}

 

ASP.NET Web API模型验证以及异常处理方式

标签:

原文地址:http://www.cnblogs.com/darrenji/p/5223771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!