Orchard 元素编辑器

Orchard Element Editor

我有一个自定义元素,它是 table .

Editor 上,管理员选择应将哪个数据源传递给该元素(例如人员列表)。

无论何时重新加载或重新启动页面,Orchard 都不记得放置在布局上的元素包含 Persons 的数据源。

我怎样才能做到这一点? (为元素分配数据源,同类型的另一个元素应该可以获取另一个数据源)

这听起来像是 Projection 元素实现的类似场景,它使用户能够 select 查询作为其数据源。 Projection 元素通过其 Data 字典中的标识符存储 selected 数据源。你需要做同样的事情。例如,如果您想将 selected 数据源存储在 Table 元素的 属性 中,则 属性 实现将如下所示:

public string DataSourceId {
   get { return this.Retrieve<string>(x => x.DataSourceId); }
   set { this.Store(x => x.DataSourceId, value); }
}

RetrieveStore 方法是 IElement 上的扩展方法,它们只是存储和读取为您序列化的 Data 字典中的值。这是保持自定义元素属性的关键。