我有一个两个级别的“颜色”分类,我希望将每个父节点显示为页面的一个单独的部分--用一个<h5>隔开。
我的问题是:如何获得分类法的父节点?其次,如何仅显示父项的子节点?
从调试中可以看出,段塞是附加在嵌套项(例如/parent-node/child-node)上的,但这是我所得到的。
--更新--我注意到父节点的路径值总是'/',然后子节点继续处理,直到下一个父节点被击中(只要我不手动排序)。
因此,我已经重写了我的形状如下:
@foreach (var term in terms)
{
if (term.Path == "/")
{
//It's a top-level term - add header
<h5>@term.Name</h5>
}
else
{
<div>@term.Name</div>
}
}这类工作,但现在的问题是,一切都是按字母顺序显示-而我的客户想要改变秩序。
我可以使用称重系统,但是我想要一些更健壮的东西。
任何帮助都非常感谢!
发布于 2016-02-18 13:31:24
分类法和术语都是术语的容器。要只获取分类法中的父节点,可以选择以分类法作为容器的所有术语。
var parentTerms = terms.Where(t => t.Container == myTaxonomy);您可以使用相同的方法来获取父项的子级(假设您只想深入一个层次,否则就必须递归地执行此操作)。
foreach(var parentTerm in parentTerms) {
var childTerms = terms.Where(t => t.Container == parentTerm);
}或者,您可以将Orchard的分类法服务注入到您的控制器中:
public class MyController : Controller {
private readonly ITaxonomyService _taxonomyService;
public MyController(ITaxonomyService _taxonomyService) {
this._taxonomyService = _taxonomyService;
}
}这使您可以访问几个有用的方法,如
IEnumerable<TermPart> GetParents(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term, bool includeParent);https://stackoverflow.com/questions/35455438
复制相似问题