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

Orchard - how to access taxonomy field of a custom content type programmatically

我有一个名为 Store 的自定义内容类型,它有一个 Brands 分类字段。一个 Store 可以关联多个 Brands

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

我可以创建 Stores 其他字段 OK,但不知道如何设置分类字段?

谁能告诉我如何访问自定义内容类型的分类法字段?

提前致谢。

好的(正如 Bertrand 建议的那样),使用 Import/Export 功能可能是更好的方法,但作为 Orchard 的相对菜鸟,我没有时间花时间看它,也不能找个好教程。

下面是另一种方法,使用 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");

希望这对某人有所帮助。下次可能是我! :)