在多节点树选取器中获取子名称

时间:2014-03-07 13:28:20

标签: c# asp.net-mvc razor umbraco

我试图获取一些页面的名称,这些页面是在Umbraco中使用多节点树选择器选择的 我使用的版本是Umbraco 7.01和MVC

场景是:我有一个新闻页面,在这个页面上我可以选择一些带有多节点树选择器的类别,我选择的项目是Pages。 现在,我从页面获取ID,但我不能循环ID并返回页面名称???但是,它似乎永远不会进入第二个foreach()循环

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
var getCategories = CurrentPage.category.Split(','); //My Picker, This can be several pages = more ID om pages, that why the split

<p>@CurrentPage.category//This returns 1077,1079</p> 

@foreach (string id in getCategories)
{
    @id //This return 1077 1079
    foreach (var catItem in Umbraco.TypedContent(id).Children)
    {
        <p>@catItem.Name</p>
    }
}

3 个答案:

答案 0 :(得分:0)

尼基,

在我确定之前,我已经看过了。无论如何你可以尝试

var getCategories = CurrentPage.category.Split(',').ToList();

此致

伊斯梅尔

答案 1 :(得分:0)

尼基,

确定不同的曲目,通过强类型访问尝试以下内容,这是在mvc umbraco中执行此操作的首选方式:

var getCategories = Model.Content.GetPropertyValue<string>("category").Split(',').ToList();

此致

伊斯梅尔

答案 2 :(得分:0)

更改

@foreach (string id in getCategories)
{
    @id //This return 1077 1079
    foreach (var catItem in Umbraco.TypedContent(id).Children)
    {
        <p>@catItem.Name</p>
    }
}

类似于:

@foreach (string id in getCategories)
{
@id //This return 1077 1079
int nodeId = -1;
Int32.TryParse(id,out nodeId);
Node x = new Node(nodeId);
foreach (var catItem in x.Children)
{
<p>@catItem.Name</p>
}
}