初识ABP vNext(10):ABP设置管理
點(diǎn)擊上方藍(lán)字"小黑在哪里"關(guān)注我吧
定義設(shè)置
使用設(shè)置
前言
上一篇介紹了ABP模塊化開(kāi)發(fā)的基本步驟,完成了一個(gè)簡(jiǎn)單的文件上傳功能。通常的模塊都有一些自己的配置信息,比如上篇講到的FileOptions類(lèi),其中配置了文件的上傳目錄,允許的文件大小和允許的文件類(lèi)型。配置信息可以通過(guò)Configuration[1](配置)和Options[2](選項(xiàng))來(lái)完成,ABP還提供了另一種更靈活的方式:Settings[3](設(shè)置),本篇就來(lái)介紹一下ABP的設(shè)置管理。
開(kāi)始
回顧一下上篇的FileOptions:
首先定義了一個(gè)FileOptions類(lèi),其中包含了幾個(gè)配置,然后在需要的地方中注入IOptions<FileOptions>就可以使用這些信息了。
當(dāng)然,模塊啟動(dòng)時(shí)可以做一些配置修改,比如:
無(wú)論是配置文件還是這種代碼形式的配置,都是程序?qū)用娴男薷?#xff1b;有些配置不太適合這樣做,比如這里的AllowedMaxFileSize和AllowedUploadFormats,它們應(yīng)該在應(yīng)用界面上,可以讓管理員自行修改。下面就來(lái)改造一下程序。
定義設(shè)置
使用設(shè)置之前需要先定義它,不同的模塊可以擁有不同的設(shè)置。
modules\file-management\src\Xhznl.FileManagement.Domain\Settings\FileManagementSettingDefinitionProvider.cs:
public?class?FileManagementSettingDefinitionProvider?:?SettingDefinitionProvider {public?override?void?Define(ISettingDefinitionContext?context){/*?Define?module?settings?here.*?Use?names?from?FileManagementSettings?class.*/context.Add(new?SettingDefinition(FileManagementSettings.AllowedMaxFileSize,"1024",L("DisplayName:FileManagement.AllowedMaxFileSize"),L("Description:FileManagement.AllowedMaxFileSize")).WithProperty("Group1",?"File").WithProperty("Group2",?"Upload").WithProperty("Type",?"number"),new?SettingDefinition(FileManagementSettings.AllowedUploadFormats,".jpg,.jpeg,.png,.gif,.txt",L("DisplayName:FileManagement.AllowedUploadFormats"),L("Description:FileManagement.AllowedUploadFormats")).WithProperty("Group1",?"File").WithProperty("Group2",?"Upload").WithProperty("Type",?"text"));}private?static?LocalizableString?L(string?name){return?LocalizableString.Create<FileManagementResource>(name);} }以上代碼定了了2個(gè)配置:AllowedMaxFileSize和AllowedUploadFormats,設(shè)置了它們的默認(rèn)值、名稱(chēng)和詳細(xì)說(shuō)明。因?yàn)楸卷?xiàng)目使用了EasyAbp的SettingUi模塊,所以會(huì)有一些Group1,Group2之類(lèi)的字段,具體介紹可以參考Abp.SettingUi[4]
使用設(shè)置
想讀取設(shè)置信息,只需注入ISettingProvider即可。因?yàn)楦割?lèi)ApplicationService中已經(jīng)注入,所以這里直接使用SettingProvider就好。獲取到配置,然后就可以做一些邏輯處理,比如判斷上傳文件的大小和格式是否合法:
public?class?FileAppService?:?FileManagementAppService,?IFileAppService {......[Authorize]public?virtual?async?Task<string>?CreateAsync(FileUploadInputDto?input){var?allowedMaxFileSize?=?await?SettingProvider.GetAsync<int>(FileManagementSettings.AllowedMaxFileSize);//kbvar?allowedUploadFormats?=?(await?SettingProvider.GetOrNullAsync(FileManagementSettings.AllowedUploadFormats))?.Split(",",?StringSplitOptions.RemoveEmptyEntries);if?(input.Bytes.Length?>?allowedMaxFileSize?*?1024){throw?new?UserFriendlyException(L["FileManagement.ExceedsTheMaximumSize",?allowedMaxFileSize]);}if?(allowedUploadFormats?==?null?||?!allowedUploadFormats.Contains(Path.GetExtension(input.Name))){throw?new?UserFriendlyException(L["FileManagement.NotValidFormat"]);}......} }前端設(shè)置界面:
下面可以隨便修改下設(shè)置,進(jìn)行測(cè)試:
最后
本篇內(nèi)容較少,希望對(duì)你有幫助。代碼已上傳至 https://github.com/xiajingren/HelloAbp ,歡迎star。
參考資料
[1]
Configuration: https://docs.abp.io/zh-Hans/abp/latest/Configuration
[2]Options: https://docs.abp.io/zh-Hans/abp/latest/Options
[3]Settings: https://docs.abp.io/zh-Hans/abp/latest/Settings
[4]Abp.SettingUi: https://github.com/EasyAbp/Abp.SettingUi
如果本文對(duì)您有用,
不妨點(diǎn)個(gè)“在看”或者轉(zhuǎn)發(fā)朋友圈支持一下
總結(jié)
以上是生活随笔為你收集整理的初识ABP vNext(10):ABP设置管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .NET 5.0 RC1 发布,离正式版
- 下一篇: 跟我一起学.NetCore之Asp.Ne