Orchardcms 如何按分类术语对项目结果进行分组
我有一个ContentType动物,它有一个分类领域物种。 请看这篇文章和()以获得一个很好的解释。 我运行了代码,但有两个错误。 1.var speciesField=item.Animal.Species----给出了错误:CS1061,“Orchard.ContentManagement.ContentItem'不包含定义”。 2.var项目=规范字典[speciesTerm]----给定错误:CS0136“无法在此作用域中声明名为'items'的本地或参数,因为该名称在封闭的本地中使用。 请帮忙Orchardcms 如何按分类术语对项目结果进行分组,orchardcms,Orchardcms,我有一个ContentType动物,它有一个分类领域物种。 请看这篇文章和()以获得一个很好的解释。 我运行了代码,但有两个错误。 1.var speciesField=item.Animal.Species----给出了错误:CS1061,“Orchard.ContentManagement.ContentItem'不包含定义”。 2.var项目=规范字典[speciesTerm]----给定错误:CS0136“无法在此作用域中声明名为'items'的本地或参数,因为该名称在封闭的本地中使用。
@using Orchard.ContentManagement
@using Orchard.Taxonomies.Models
@{
var items = ((IEnumerable<ContentItem>)Model.ContentItems);
var speciesDictionary = new Dictionary<TermPart, IList<ContentItem>>();
// Collect categories and their items.
foreach (var item in items) {
var speciesField = item.Animal.Species; // Assumes that the species field is attached to the Animal type's implicit part (Animal).
var speciesTerms = (IEnumerable<TermPart>)speciesField.Terms;
foreach (var speciesTerm in speciesTerms) {
var list = speciesDictionary.ContainsKey(speciesTerm) ? speciesDictionary[speciesTerm] : default(IList<ContentItem>);
if (list == null) {
list = new List<ContentItem>();
speciesDictionary.Add(speciesTerm, list);
}
list.Add(item);
}
}
}
<ul>
@foreach (var speciesTerm in speciesDictionary.Keys) {
var items = speciesDictionary[speciesTerm];
<li>
@speciesTerm.Name
</li>
}
</ul>
使用Orchard.ContentManagement
@使用Orchard.Taxonomies.Models
@{
var items=((IEnumerable)Model.ContentItems);
var speciesdirectionary=新字典();
//收集类别及其项目。
foreach(项目中的var项目){
var speciesField=item.Animal.Species;//假定物种字段附加到动物类型的隐式部分(动物)。
var speciesTerms=(IEnumerable)speciesField.Terms;
foreach(var speciesTerm在speciesTerms中){
var list=speciesDictionary.ContainsKey(speciesTerm)?speciesDictionary[speciesTerm]:默认值(IList);
if(list==null){
列表=新列表();
添加(speciesTerm,列表);
}
列表。添加(项目);
}
}
}
-
@foreach(speciesDictionary.Keys中的var speciesTerm){
var items=speciesdirectionary[speciesTerm];
- @物种名称 }
ContentItem
类的属性。这实际上是部分正确的,因为它确实存在于ContentItem上,但由于您将其强制转换为ContentItem类,它会丢失动态属性。
您可以通过不强制转换到ContentItem类,而只是转换到dynamic来解决此问题:
var items = ((IEnumerable<dynamic>)Model.ContentItems);
因此,在底部给它一个不同的名称:
<ul>
@foreach (var speciesTerm in speciesDictionary.Keys) {
// Cannot use 'items' here again
var speciesItems = speciesDictionary[speciesTerm];
<li>
@speciesTerm.Name
</li>
}
</ul>
@foreach(speciesDictionary.Keys中的var speciesTerm){
//无法在此处再次使用“项目”
var speciesItems=speciesDictionary[speciesTerm];
-
@物种名称
}
devqon,对不起!我相信稍后,我会根据您的建议修改代码,它有一个错误:这一行“list.Add(item)”;----给出了错误:“Add”不是定义。我还修改了代码,从到按分类术语对项目结果进行分组,到按标记对项目结果进行分组
<ul>
@foreach (var speciesTerm in speciesDictionary.Keys) {
// Cannot use 'items' here again
var speciesItems = speciesDictionary[speciesTerm];
<li>
@speciesTerm.Name
</li>
}
</ul>