Orchard - 如何以编程方式访问自定义内容类型的分类法字段

时间:2016-06-17 17:29:03

标签: orchardcms

我有一个名为Store的自定义内容类型,其中包含Brands分类字段。 Store可以有多个Brands与之关联。

我的任务是构建一个导入/导出例程,允许用户上传包含新Stores及其关联的Brands的CSV文件。

我可以创建商店其他字段,但是不能弄清楚如何设置分类字段?

有人可以告诉我如何访问自定义内容类型的分类法字段吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

好的(正如Bertrand建议的那样),使用导入/导出功能可能是一个更好的方法,但作为Orchard的相对菜鸟,我没有时间花时间去看它并且不能#39找不到好的教程。

以下是另一种方法,使用TaxonomyService以编程方式将条款分配给ContentItem。

首先,将ContentManagerTaxonomyService注入构造函数...

private ITaxonomyService _taxonomyService;
private IContentManager _contentManager;

public MyAdminController(IContentManager contentManager, ITaxonomyService taxonomyService)
{
     _contentManager = contentManager;
     _taxonomyService = taxonomyService;
}

创建您的ContentItem&设置标题

var item = _contentManager.New("MyContentType");
item.As<TitlePart>().Title = "My New Item";

_contentManager.Create(item);

现在我们有一个可以使用的ContentItem。是时候获得分类学了找到你的学期...

var taxonomy = _taxonomyService.GetTaxonomyByName("Taxonomy Name");
var termPart = _taxonomyService.GetTermByName(taxonomy.Id, "Term Name");

将条款添加到类型TermPart ...

的列表中
List<TermPart> terms = new List<TermPart>();
terms.Add(termPart);

最后,调用UpdateTerms,传入ContentItem,要分配的术语以及要更新的ContentItem上的字段名称......

_taxonomyService.UpdateTerms(item, terms.AsEnumerable<TermPart>(), "My Field");

希望这有助于某人。可能是我下次回合! :)