CodeEffects RuleEditor列表存储的枚举值保存规则时不显示如何解决
解决方案
你遇到的是CodeEffects对枚举类型的泛型列表字段识别异常,导致规则文本渲染时枚举值缺失,按以下步骤操作即可修复:
- 首先给枚举类型加上CodeEffects官方的枚举特性标记,明确枚举的展示配置:
using CodeEffects.Rule.Attributes; [EnumType(DisplayName = "食品")] public enum Food { [EnumValue(DisplayName = "三明治")] Sandwich = 0, [EnumValue(DisplayName = "苹果")] Apple = 1, [EnumValue(DisplayName = "香蕉")] Banana = 2, [EnumValue(DisplayName = "面条")] Noodles = 3, [EnumValue(DisplayName = "糖果")] Candy = 4 }
- 然后给
FavoriteFood属性的Field特性补充ValueType参数,显式指定列表的子项类型为Food枚举:
[Field(DisplayName = "Favorite food", Description = "The patient's favorite food", ValueType = typeof(Food))] public List<Food> FavoriteFood { get; set; }
- 不要直接使用前端提交的原始规则文本,用CodeEffects后端提供的
RuleManager工具类读取你已经存储正常的规则XML来生成标准可读文本,示例代码如下:
// 入参ruleXml为你已存储的有效规则XML字符串 var manager = new RuleManager(typeof(Patient)); var rule = manager.LoadRuleXml(ruleXml); // 输出的friendlyText即为带完整枚举显示名的规则描述文本 string friendlyText = rule.GetRuleText();
- 可选配置:如果前端规则编辑器里枚举下拉也显示异常,可在Angular组件初始化配置中添加
enumDisplayMode: "Name"参数,确保编辑器优先读取枚举的显示名而非数值。
内容的提问来源于stack exchange,提问作者LAN
相关产品推荐
相关产品推荐

