2016-08-04 44 views
1

我有这条线我是一个Umbraco解决方案,它让我选择的节点的ID,逗号分隔。获取属性值而不仅仅是Id

但是我想在oneliner中得到的是所选节点的值。 因此,如果只选择了一个,那么它现在只是返回节点ID,如“1001,1000,1003”或“1003”。

我希望它返回的是选定节点的值。让我们说它是我想要的财产的菜单标题。所以,而不是上述输出,我想要“Frontpage,联系人,关于我们”等。

这将看起来如何?

var mynode = Page.Cache.GetById(id); 
mynode.GetPropertyString("pages") 
+0

你是什么'mynode'变量的类型?它是“IPublishedContent”的一个实例吗? –

+0

@RobPurcell是的先生:-) – brother

回答

4

最简单的方法是安装Umbraco Core Property Value Converters nuget包。这会为您提供一种扩展方法,您可以使用它来一次检索节点列表。然后你可以使用LINQ来选择每个页面的menuTitle属性。

var menuTitles = mynode.GetPropertyValue<IEnumerable<IPublishedContent>>("pages") 
    .Select(x => x.GetPropertyValue<string>("menuTitle")); 

如果需要,可以随后使用string.Join()到菜单标题结合起来,得到一个逗号分隔的列表。

这里,你可能需要添加使用的语句列表:

using System.Collections.Generic; 
using System.Linq; 
using Our.Umbraco.PropertyConverters; 
using Umbraco.Web; 
using Umbraco.Core.Models; 
相关问题