如何存储在果园CMS一个逗号分隔的列表?(How do I store a comma-separa

2019-11-01 08:35发布

利用果园CMS,我处理的记录和部分代理,但无法弄清楚如何将它保存到数据库中。 事实上,我承认,我甚至不知道如何让我想保存到这种模式的项目。 我本来用enum的用于选择:

MyEmum.cs

public enum Choices { Choice1, Choice2, Choice3, Choice4 }

MyRecord.cs

public virtual string MyProperty { get; set; }

MyPart.cs

public IEnumerable<string> MyProperty
{
    get
    {
        if (String.IsNullOrWhiteSpace(Record.MyProperty)) return new string[] { };
        return Record
            .MyProperty
            .Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(r => r.Trim())
            .Where(r => !String.IsNullOrEmpty(r));
    }
    set { Record.MyProperty = value == null ? null : String.Join(",", value); }
}

现在,在我的服务类,我想是这样的:

public MyPart Create(MyPartRecord record)
{
    MyPart part = Services.ContentManager.Create<MyPart>("My");
    ...
    part.MyProperty = record.MyProperty; //getting error here
    ...
    return part;
}

不过,我收到以下错误: Cannot implicitly convert 'string' to System.Collections.Generic.IEnumerable<string>'

从本质上讲,我试图从一个CheckBoxList的(一个或多个选择)作为一个数据库中的逗号分隔的列表保存的选择。

而这还不让我过去的我该如何使用的问题enum 。 有什么想法吗?

对于一些背景:

我明白,要处理这种关系的适当方法是创建一个单独的表和使用IList<MyEnum> 然而,这是我不打算与编辑操作(事实上,没有司机在这种情况下作为我处理这个问题的前端与控制器和路线)一个简单的列表。 我只是捕捉数据和统计/历史目的的管理视图重新显示它。 我甚至可以考虑摆脱部分(考虑以下职位: 贝特朗的博客文章 。

Answer 1:

它应该是:

part.MyProperty = new[] {"foo", "bar"};

例如。 该部分的setter将存储在记录的属性作为一个逗号分隔的字符串,这将得到持续到DB值。

如果你想使用枚举值,你应该使用ParseToString的API,.NET提供枚举。



文章来源: How do I store a comma-separated list in Orchard CMS?