获取属性值而不是Id

时间:2016-08-04 14:25:56

标签: umbraco umbraco7

我有一个Umbraco解决方案,它让我获得所选节点的ID,逗号分隔。

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

我想要它返回的是所选节点的值。让我们说它想要的属性上的菜单标题。因此,我想要“Frontpage,Contact,About Us”等,而不是上面的输出。

看起来怎么样?

<div class="container">
    <div class="form-group" id="entries-per-page">
      <label>Number of Entries:</label>
      <select class="form-control" id="num-entries">
        <option value="10">Show 10 entries</option>
        <option value="25" selected>Show 25 entries</option>
        <option value="50">Show 50 entries</option>
        <option value="100">Show 100 entries</option>
      </select>
    </div>
    <table class="table table-bordered table-hover">
        <thead>
          <tr class="header-names">
            <th class="book-category">Title</th>
            <th class="book-category">Author</th>
            <th class="book-category">Meta Data</th>
            <th class="book-category">Options</th>
          </tr>
        </thead>
        <tbody id="books-table">
            <script type="text/template" id="books-template">
                <td><%- title %></td>
                <td><%- author %></td>
                <td><span class='glyphicon glyphicon-remove delete'></span></td>
            </script>
        </tbody>
    </table>
</div>

1 个答案:

答案 0 :(得分: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语句列表:

using System.Collections.Generic;
using System.Linq;
using Our.Umbraco.PropertyConverters;
using Umbraco.Web;
using Umbraco.Core.Models;