如何在Ucommerce中创建枚举式自定义数据类型(单选按钮编辑器)
实现Ucommerce自定义单选按钮数据类型(与枚举功能一致)
刚好之前折腾过这个需求,给你一步步拆解实现方法,亲测可行:
1. 创建自定义数据类型核心类
首先要定义一个继承自CustomDataType的类,核心是开启枚举配置支持,并指定编辑器名称和视图路径:
using Ucommerce.EntitiesV2; using Ucommerce.Web.UI; public class RadioButtonEnumDataType : CustomDataType { // 指定后台显示的编辑器名称 public override string EditorName => "单选按钮(Radio Button)"; // 编辑器视图的路径,后面要创建这个视图文件 public override string EditorViewPath => "~/Apps/Ucommerce/Backoffice/CustomDataTypes/RadioButtonEnumEditor.cshtml"; // 关键:开启这个属性,后台才会显示"Create Data Type Enum"配置项 public override bool SupportsEnumConfiguration => true; }
2. 注册自定义数据类型
需要把这个数据类型注册到Ucommerce的依赖容器中,比如在项目的DependencyRegistrar类(如果没有可以新建)中添加注册逻辑:
using StructureMap; using Ucommerce.Web.UI; public class DependencyRegistrar : IDependencyRegistrar { public void Register(IContainer container) { // 注册我们的自定义数据类型 container.For<ICustomDataType>().Add<RadioButtonEnumDataType>(); } public int Order => 1; }
3. 编写单选按钮编辑器视图
在指定的路径下创建RadioButtonEnumEditor.cshtml视图文件,用来渲染单选按钮组,直接读取枚举配置的选项即可:
@model Ucommerce.Web.UI.Models.CustomDataTypeEditorModel <div class="form-group"> @foreach (var option in Model.EnumOptions) { <div class="radio"> <label> <input type="radio" name="@Model.PropertyName" value="@option.Value" @(Model.Value == option.Value ? "checked" : "") /> @option.Name </label> </div> } </div>
这里Model.EnumOptions就是你通过后台“Create Data Type Enum”添加的所有选项,Model.Value是当前选中的值,逻辑很直观。
4. 后台配置与测试
完成代码编写后,部署到环境,然后在Ucommerce后台操作:
- 进入Settings > Data Types,点击Create Data Type
- 选择我们创建的「单选按钮(Radio Button)」类型
- 在配置界面就能看到「Create Data Type Enum」选项,添加你需要的选项名称和对应值
- 保存数据类型后,就可以在产品、类别等实体的自定义属性中选择这个数据类型来使用了
关键注意点
SupportsEnumConfiguration = true是实现枚举配置的核心开关,没有这个的话后台不会显示枚举配置入口- 这个实现完全复用Ucommerce内置的枚举数据存储逻辑,不需要自己写额外的数据访问代码,和原生枚举数据类型的存储行为一致
- 编辑器视图可以根据需要调整样式,比如加入Bootstrap类或者自定义样式,适配后台界面
内容的提问来源于stack exchange,提问作者Roffers
相关产品推荐
相关产品推荐

