使用 Orchard CMS,我正在处理记录和部分代理,但无法弄清楚如何将其保存到数据库中。事实上,我承认我什至不知道如何将我试图保存的项目放入这个范例中。我最初使用enum
's 进行选择:
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>'
本质上,我试图将复选框列表(一个或多个选择)中的选择保存为数据库中的逗号分隔列表。
这甚至没有让我解决如何使用enum
. 有什么想法吗?
对于一些背景:
我知道处理这种关系的适当方法是创建一个单独的表并使用IList<MyEnum>
. 然而,这是一个简单的列表,我不打算通过编辑来操作(事实上,在这个场景中没有使用驱动程序,因为我在前端使用控制器和路由处理这个)。我只是为了统计/历史目的捕获数据并在管理视图中重新显示它。我什至可以考虑去掉 Part(考虑以下帖子:Bertrand 的博客文章。