微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net webapi Parameter Binding 实现NotNull 特性标签

记录下:

  请仔细查阅,微软文档地址 https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

  asp.net webApi老系统有个需求。在控制器上执行的action的参数不能为空。

  需要像 FromBody 这样,可以自由标注的标签

  

 

 

   问题点

  关于 FromUri与FromBody 参考微软文档

  如何在 asp.net 执行 FromBody 或者 FromUri 代码之后再执行我们的 NotNull 判断?

  Asp.Net WebApi 如何确定参数使用 FromBody 还是 FromUri ?

  如下图:

  

 

 

   通过Resharp反编译可以查看到,通过 action 中的参数类型判断,使用FromUri还是FromBody

  实现方式

  FromUri代码

  

 

 

   通过 base.GetValueProviderFactories(configuration) 最终获取到 “QueryStringValueProvider”(从请求地址中取值),“RouteDataValueProvider”(从路由中取值)  如下图

  

 

 

   FromBody如下图:

  

 

 

 

  

 

 

   根据请求的ContentType然后得到对应的Fromatting从请求负载中取值

  我的实现方式  

  实现我的 FromBody 与 FromUri 。 当请求进入asp.net Webapi应用后 先走 FromBody 或 FromUri  代码,执行完后,再执行我的 NotNull 判断,如是null则抛出异常。

  具体实现代码,请参考我的仓库  Asp.Net/全局异常捕捉/CatchGlobalException/CatchGlobalException/Controllers/NotNull.cs    · zheng_qi/我的仓库 - 码云 - 开源中国 (gitee.com)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐