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。
首先,将ContentManager
和TaxonomyService
注入到构造函数中...
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");
希望这对某人有所帮助。下次可能是我! :)
我有一个名为 Store
的自定义内容类型,它有一个 Brands
分类字段。一个 Store
可以关联多个 Brands
。
我的任务是构建一个 import/export 例程,允许用户上传包含新 Stores
及其关联的 Brands
的 CSV 文件。
我可以创建 Stores 其他字段 OK,但不知道如何设置分类字段?
谁能告诉我如何访问自定义内容类型的分类法字段?
提前致谢。
好的(正如 Bertrand 建议的那样),使用 Import/Export 功能可能是更好的方法,但作为 Orchard 的相对菜鸟,我没有时间花时间看它,也不能找个好教程。
下面是另一种方法,使用 TaxonomyService 以编程方式将术语分配给 ContentItem。
首先,将ContentManager
和TaxonomyService
注入到构造函数中...
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");
希望这对某人有所帮助。下次可能是我! :)