2016-08-04 6 views
1

У меня есть эта строка i решение Umbraco, которое получает меня от выбранных узлов, разделенных запятыми.Получить значение свойства, а не просто Id

Но я хочу получить в oneliner значение выбранного узла. Так что в настоящее время он просто возвращает идентификатор узла, например «1001, 1000, 1003» или просто «1003», если выбран только один.

Что я хочу вернуть, это значение выбранного узла. Позволяет сказать его название меню на имущество, которое я хочу. Поэтому вместо вышеупомянутого вывода я хочу «Главная страница, Контакты, О нас» и т. Д.

Как бы это выглядело?

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;