Umbraco Razor 导航访问自定义字段
Umbraco Razor navigation access custom fields
我正在尝试构建一个导航,该导航会根据 CMS 中的设置自动包含某些页面。
我使用了站点地图部分宏,并尝试添加一个 if 语句来检查页面 属性,如下所示:@if (!item.HideSubPages) {
但是,我收到以下错误:
Umbraco.Core.Models.IPublishedContent' does not contain a definition for 'HideSubPages' and no extension method 'HideSubPages' accepting a first argument of type 'Umbraco.Core.Models.IPublishedContent' could be found (are you missing a using directive or an assembly reference?)
这是我的完整代码
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using Umbraco.Core.Models
@using Umbraco.Web
@*
This snippet makes a list of links of all visible pages of the site, as nested unordered HTML lists.
How it works:
- It uses a custom Razor helper called Traverse() to select and display the markup and links.
*@
@{ var selection = Model.Content.Site(); }
<div class="sitemap">
@* Render the sitemap by passing the root node to the traverse helper, below *@
@Traverse(selection)
</div>
@* Helper method to traverse through all descendants *@
@helper Traverse(IPublishedContent node)
{
@* Update the level to reflect how deep you want the sitemap to go *@
const int maxLevelForSitemap = 4;
@* Select visible children *@
var selection = node.Children.Where(x => x.IsVisible() && x.Level <= maxLevelForSitemap).ToArray();
@* If any items are returned, render a list *@
if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li class="level-@item.Level">
<a href="@item.Url">@item.Name</a>
@* Run the traverse helper again for any child pages *@
@if (!item.HideSubPages) {
@Traverse(item)
}
</li>
}
</ul>
}
}
尝试
item.GetPropertyValue<bool>("hideSubPages")
代替?
您需要动态类型,但正在处理 IPublishedContent。无论如何,Dynamics 都不是未来的证明,因为对它们的支持将在下一个 "big" 版本的 Umbraco (v8) 中结束,我相信。所以 GetProperty/GetPropertyValue 是你的朋友:-)
我正在尝试构建一个导航,该导航会根据 CMS 中的设置自动包含某些页面。
我使用了站点地图部分宏,并尝试添加一个 if 语句来检查页面 属性,如下所示:@if (!item.HideSubPages) {
但是,我收到以下错误:
Umbraco.Core.Models.IPublishedContent' does not contain a definition for 'HideSubPages' and no extension method 'HideSubPages' accepting a first argument of type 'Umbraco.Core.Models.IPublishedContent' could be found (are you missing a using directive or an assembly reference?)
这是我的完整代码
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using Umbraco.Core.Models
@using Umbraco.Web
@*
This snippet makes a list of links of all visible pages of the site, as nested unordered HTML lists.
How it works:
- It uses a custom Razor helper called Traverse() to select and display the markup and links.
*@
@{ var selection = Model.Content.Site(); }
<div class="sitemap">
@* Render the sitemap by passing the root node to the traverse helper, below *@
@Traverse(selection)
</div>
@* Helper method to traverse through all descendants *@
@helper Traverse(IPublishedContent node)
{
@* Update the level to reflect how deep you want the sitemap to go *@
const int maxLevelForSitemap = 4;
@* Select visible children *@
var selection = node.Children.Where(x => x.IsVisible() && x.Level <= maxLevelForSitemap).ToArray();
@* If any items are returned, render a list *@
if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li class="level-@item.Level">
<a href="@item.Url">@item.Name</a>
@* Run the traverse helper again for any child pages *@
@if (!item.HideSubPages) {
@Traverse(item)
}
</li>
}
</ul>
}
}
尝试
item.GetPropertyValue<bool>("hideSubPages")
代替?
您需要动态类型,但正在处理 IPublishedContent。无论如何,Dynamics 都不是未来的证明,因为对它们的支持将在下一个 "big" 版本的 Umbraco (v8) 中结束,我相信。所以 GetProperty/GetPropertyValue 是你的朋友:-)