那么我们如何自定义这些设置的分组呢? 有两种方式:
使用 WithProperty 方法
WithProperty 方法是由ABPSettingDefinition类提供的一个方法, 我们可以直接在设置定义中使用它:
MyAbpApp.Domain 项目 - Settings/MyAbpAppSettingDefinitionProvider 类
context.Add( new SettingDefinition( "Connection.Ip", // 设置名称 "127.0.0.1", // 默认值 L("DisplayName:Connection.Ip"), // 显示名称 L("Description:Connection.Ip") // 描述 ) .WithProperty(SettingUiConst.Group1, "Server") .WithProperty(SettingUiConst.Group2, "Connection") );常量 Group1 和 Group2 定义在 SettingUiConst类中
设置 "Group1" 为 "Server", "Group2" 为 "Connection"
然后我们应该为这两个分组名字提供本地化资源:
MyAbpApp.Domain.Shared 项目
Localization/MyAbpApp/en.json
{ "culture": "en", "texts": { ... "Server": "Server", "Connection": "Connection" } }
Localization/MyAbpApp/zh-Hans.json
{ "culture": "zh-Hans", "texts": { ... "Server": "服务器", "Connection": "连接" } }重新启动应用程序查看分组名称是否正确设置
使用设置属性文件
另一种分组方式是使用设置分组文件, 该方式由SettingUi模块提供. 当你不太容易修改设置的定义, 或者你想将分组信息汇集在一个单独的位置时, 这种方式很有用.
为了演示这种方式, 让我们定义一个新设置:
MyAbpApp.Domain 项目 - Settings/MyAbpAppSettingDefinitionProvider 类
new SettingDefinition( "Connection.Port", 8080.ToString(), L("DisplayName:Connection.Port"), L("Description:Connection.Port") )为这个设置添加本地化的步骤省略了.
然后我们需要创建一个新的任意名字的JSON文件, 但是路径必须为"/SettingProperties", 这是因为SettingUi模块将会从这个路径下查找设置属性文件.
MyAbpApp.Domain.Shared 项目 - /SettingProperties/MySettingProperties.json 文件
{ "Connection.Port": { "Group1": "Server", "Group2": "Connection" } }设置名称 Connection.Port 做为JSON对象的键
使用 "Group1" 和 "Group2" 来设置分组名称
重新启动应用程序来查看新分组的设置
设置类型默认情况下, 一个设置的值是字符串类型, 将会在UI中渲染为一个文本输入控件. 我们可以简单地提供一个设置属性"Type"来定制它:
MyAbpApp.Domain.Shared 项目 - /SettingProperties/MySettingProperties.json 文件
{ "Connection.Port": { "Group1": "Server", "Group2": "Connection", "Type": "number" } }"Connection.Port" 设置类型为 "number"
不用重新启动应用程序, 只需要按下F5来刷新浏览器, 你可以立即看到效果:
现在输入的类型变更为了"数字", 并且前端的验证也生效了.
设置类型也可以通过 WithProperty 方法来配置, 如 WithProperty("Type", "number")
目前SettingUi支持以下几种设置类型:
text (默认)
number
checkbox
select
需要一个额外属性 "Options" 来提供选项, 是一个使用竖线(|)分隔的字符串
"Connection.Protocol": { "Group1": "Server", "Group2": "Connection", "Type": "select", "Options": "|HTTP|TCP|RDP|FTP|SFTP" }渲染结果:
到这里教程就结束了. 通过本教程, 你应该可以轻松地使用SettingUi来管理你的设置了. 教程的源码可以在sample文件夹中找到.
本地化SettingUi模块使用ABP的本地化系统来显示设置的本地化信息. 现在支持的语言有:
英语
简体中文
土耳其语
本地化资源存放在EasyAbp.Abp.SettingUi.Domain.Shared项目的/Localization/SettingUi中.