Reputation: 8171
I have this line i an Umbraco solution, which gets me the ids of the nodes selected, comma seperated.
But what i want to get, in a oneliner, is a value of the node(s) selected. So currently it is just returning the node id like "1001, 1000, 1003" or just "1003" if only one is selected.
What i want it to return, is a value of the selected node. Lets say its a menu title on the property i want. So instead of the above output, i want "Frontpage, Contact, About Us" etc.
How would that look?
var mynode = Page.Cache.GetById(id);
mynode.GetPropertyString("pages")
Upvotes: 1
Views: 642
Reputation: 1285
The simplest way would be to install the Umbraco Core Property Value Converters nuget package. This would then provide you with an extension method that you can use to retrieve a list of nodes in one go. Then you could use LINQ to select the menuTitle
property of each page.
var menuTitles = mynode.GetPropertyValue<IEnumerable<IPublishedContent>>("pages")
.Select(x => x.GetPropertyValue<string>("menuTitle"));
If you need to you can then use string.Join()
to combine the menu titles to get a comma-separated list.
Here's a list of using statements that you might need to add:
using System.Collections.Generic;
using System.Linq;
using Our.Umbraco.PropertyConverters;
using Umbraco.Web;
using Umbraco.Core.Models;
Upvotes: 4