开源地址: https://github.com/EasyAbp/Abp.SettingUi
一直想宣传一下SettingUi, 因为 懒 工作比较忙, 所以才拖到今天.
关于ABP就不需要我再多废口舌了, 已经是一个非常出名的.NET Core的框架, 在国内也已经有很多企业在正式项目中广泛使用了.
Abp.SettingUi是一个用来管理Abp中设置的模块, 简单来讲它可以让用户通过UI来管理ABP中各个设置的值, 比如修改默认语言, 设置密码复杂度等等, 可以说装上这个模块你就开启了ABP的"隐藏功能".
应该说设置管理是一个很重要的功能, 但是ABP的社区版没有内置, 只在ABP的商业版中才有设置的UI, 但仍需开发者通过代码来为各个设置项进行适配才可以.
而SettingUi会自动扫描系统中所有的设置, 并在UI中显示出来, 无需开发者过多干预, 开箱即用.
从发布至今, SettingUi在NUGET上已经有近7000次下载, 可以说是ABP中非常实用一个模块, 甚至也有ABP商业版用户来使用这个模块, 可见SettingUi得到了很多ABP开发者的认可.
为了更好的让国内开发者使用, SettingUi 1.3.0版增加了中文文档, 该文档是我花了很多心思写的一个Step by Step的教程, 所以接下来就是该文档复制过来, 希望能吸引更多的使用者:)
Abp.SettingUi一个用来管理ABP设置的模块
如果你在使用 ABP v2.1.1 之前的版本, 请查看Abp.SettingManagement.Mvc.UI
功能通过UI管理ABP设置的值
支持本地化
设置分组
为不同设置显示适当的控件
可通过权限控制设置的显示
在线演示我们为这个模块创建了一个在线演示: https://settingui.samples.easyabp.io
安装 使用AbpHelper (推荐)在你的ABP项目的根文件夹中运行以下命令:
abphelper module add EasyAbp.Abp.SettingUi -acshlw
手动安装包
安装以下 NuGet 包.
EasyAbp.Abp.SettingUi.Application
EasyAbp.Abp.SettingUi.Application.Contracts
EasyAbp.Abp.SettingUi.Domain.Shared
EasyAbp.Abp.SettingUi.HttpApi
EasyAbp.Abp.SettingUi.HttpApi.Client (只有 才需要)
EasyAbp.Abp.SettingUi.Web
添加 DependsOn(typeof(AbpSettingUiXxxModule)) 属性来配置模块依赖. ()
配置本地化资源为了让SettingUi模块使用应用程序的本地化资源, 我们需要将它们添加进SettingUiResource:
MyAbpApp.Domain.Shared 项目 - MyAbpAppDomainSharedModule 类
Configure<AbpLocalizationOptions>(options => { ... options.Resources .Get<SettingUiResource>() .AddVirtualJson("/Localization/MyAbpApp"); }); 使用
授权 ("Setting UI" - "Show Setting Page")
刷新浏览器, 然后你就可以使用 "Administration" - "Settings" 菜单来看见所有ABP内置的设置了
管理自定义设置除了ABP自定义设置以外, 你也可以使用这个模块来管理你自己的设置.
定义一个设置
MyAbpApp.Domain 项目 - Settings/MyAbpAppSettingDefinitionProvider 类
public class MyAbpAppSettingDefinitionProvider : SettingDefinitionProvider { public override void Define(ISettingDefinitionContext context) { context.Add( new SettingDefinition( "Connection.Ip", // 设置的名称 "127.0.0.1", // 默认值 L("DisplayName:Connection.Ip"), // 显示名称 L("Description:Connection.Ip") // 描述 )); } private static LocalizableString L(string name) { return LocalizableString.Create<MyAbpAppResource>(name); } }设置的名称为"Connection.Ip"
提供了一个默认值: "127.0.0.1"
使用帮助方法 L 为 显示名称 和 描述 赋予了可本地化的字符串. 格式 "DisplayName:{SettingName}" 是ABP推荐的形式.
ABP的设置系统, 请参见 设置文档
定义本地化资源, 出于演示目的, 我们定义了英语和简体中文的本地化资源
MyAbpApp.Domain.Shared 项目
Localization/MyAbpApp/en.json
{ "culture": "en", "texts": { ... "DisplayName:Connection.Ip": "IP", "Description:Connection.Ip": "The IP address of the server." } }
Localization/MyAbpApp/zh-Hans.json
{ "culture": "zh-Hans", "texts": { ... "DisplayName:Connection.Ip": "IP", "Description:Connection.Ip": "服务器的IP地址." } }
重新启动应用程序, 我们可以看到设置显示了, 并且本地化也正常工作
分组你可能注意到我们的自定义设置显示在"其它"标签, "其它"卡片中, 这些是默认的分组, 分别称之为"Group1"和"Group2"