ASP.NET Web API模型验证以及异常处理方式
2016-02-27 22:42
661 查看
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.
还可以通过"面向切面"的方式,自定义一个模型验证的特性ActionFilterAttibute特性。
然后需要把自定义的过滤器特性注册到默认的过滤器集合中去。
如果不在全局注册过滤器,我们还可以把过滤器特性打到控制器或控制器方法上去。
具体来说,比如有:
[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中<%@ Page Language....的意思
- asp.net对cookie的操作
- 关于Raspberry 2使用360随身WiFi、小度等等WiFi
- asp.net mysql 链接类
- ASP.NET 连接MySql数据库
- 《ASP.NET5》Web API Controller Class学习
- 【ASP.Net】HtmlTextWriter学习笔记
- ASP.NET路由模型解析
- 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login”
- cmd删除Temporary ASP.NET Files方法
- ASP.NET 页面之间传递值的几种方式
- 【Web API系列教程】2.3 — ASP.NET Web API 2中的属性路由
- 【Web API系列教程】2.2 — ASP.NET Web API中的路由和动作选择机制
- 【Web API系列教程】2.1 — ASP.NET Web API中的路由机制
- NU1002 The dependency Microsoft.AspNet.Mvc 5.2.3 in project dotnetstarter does not support framework
- CS0234 The type or namespace name 'Mvc' does not exist in the namespace 'Microsoft.AspNet' (are you
- 尝试在mac上用dotnet cli运行asp.net core示例程序
- 关于aspx 页面生成html 源码顶部空行不得不说的事儿
- asp.net IIS7 503错误
- 实现Asp.Net Mvc4多级Views目录