Abp小知識-如何全局設置DontWrapResult屬性


demo地址

GitHub相關demo地址:https://github.com/PuzzledAlien/DotNetCore_Practice/tree/master/ABP.Demo/WebApplication1
對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"
]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM