Abp小知识-如何全局设置DontWrapResult属性

Posted alienxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Abp小知识-如何全局设置DontWrapResult属性相关的知识,希望对你有一定的参考价值。

demo地址

GitHub相关demo地址:
对demo说明一下,非abp官网模板,使用Visual Studio 2019创建的asp.net core 2.2 webapi项目,引入Abp.AspNetCore包,简单改造一下。

适配Abp

简单列举改造步骤:

  1. 初始化项目
  2. 通过nuget引入Abp.AspNetCore
  3. 创建module
  4. 改造Startup
  5. Controller需继承AbpController

按照上述步骤改造完成之后,运行站点,返回结果如下(已对返回的json字符串格式化以方便查看)


  "result": [
    "value1",
    "value2"
  ],
  "targetUrl": null,
  "success": true,
  "error": null,
  "unAuthorizedRequest": false,
  "__abp": true

WrapResult和DontWrapResult

使用属性WrapResult和DontWrapResult控制是否对Controller或者Action处理。默认情况下,会对返回结果封装,封装结果如上。[DontWrapResult]等同于[WrapResult(WrapOnSuccess = false, WrapOnError = false)]
对我来说,我是不希望获取干净的返回,不需要什么封装。这时我可以再Controller和Action上添加[DontWrapResult],屏蔽封装。不想每添加一个Controller或者Action,都添加该属性?你需要全局配置Configuration.Modules.AbpAspNetCore()
配置如下

var result = new DontWrapResultAttribute();
Configuration.Modules.AbpAspNetCore().DefaultWrapResultAttribute.WrapOnError = result.WrapOnError;
Configuration.Modules.AbpAspNetCore().DefaultWrapResultAttribute.WrapOnSuccess = result.WrapOnSuccess;

详情可查看:如何全局配置WrapResult

全局配置之后,返回如下

[
  "value1",
  "value2"
]

以上是关于Abp小知识-如何全局设置DontWrapResult属性的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序开发常用知识点

[Abp vNext 入坑分享] - 5.全局异常替换

[Abp vNext 入坑分享] - 5.全局异常替换

ABP官方文档翻译 3.8 数据过滤器

进军ABP第一天:ABP理论知识

[Abp 源码分析]系统设置