umbracoNaviHide并不参与新项目

时间:2017-10-13 07:52:31

标签: umbraco umbraco7

我最近的所有项目都在一个True / False属性中实现了umbracoNaviHide,它们都运行得很好。在我的7.6.9升级项目中,我根本无法获得True / False值。

在我的主人作文中,我有一个"导航" tab以及True / False属性。我的所有页面都通过该组合继承。

当我做类似的事情时:

var menuItems = CurrentPage.Site().Children;

@foreach(var item in menuItems) {
    if(item.IsVisible()) {
        <!--show element-->
    }
}

它不起作用。它应该像我在所有最新项目中一样工作。以下是我尝试过的内容:

var menuItems = CurrentPage.Site().Children.Where("Visible");
var menuItems = CurrentPage.Site().Children.Where("umbracoNaviHide == false"); //setting this to true gives me no results
var menuItems = CurrentPage.Site().Children.Where(x => x.IsVisible());
var menuItems = CurrentPage.Site().Children.Where("randomProperty == false"); //or true

foreach(var item in menuItems) {
    if(!item.HasValue("umbracoNaviHide)) { <!-- show item --> }
    if(item.GetPropertyValue("umbracoNaviHide")) == "false") { <!-- show item --> }
}

我认为这就是全部。我确实更新了我的ModelsBuilder。我确实重启了这个项目。我删除了属性并读了它。我基本上尝试过所有的东西,但它只是不起作用。

究竟是什么?

更新:看看这个。这太棒了:

@foreach(var item in menuItems) {
    <p>@item.GetPropertyValue("umbracoNaviHide") - @item.Name</p>
}

这给了我以下内容:

FALSE - Our offers
FALSE - Technology
TRUE - Projects
FALSE - About us
FALSE - Gallery
TRUE - Contact

但是,这是后台设置umbracoNaviHide的方式:

Ticked - Our offers
Not ticked - Technology
Ticked - Projects
Not ticked - About us
Not ticked - Gallery
Ticked - Contact

这可能是怎么回事?

2 个答案:

答案 0 :(得分:1)

好的,现在一切都很清楚:)

您正在使用 动态 对象,并且您尝试将它们视为 IPublishedContent 。如果它们没有正确映射,则表现得很奇怪且不可预测。

由于动态对象将在以下Umbraco版本中删除,我建议使用强类型 IPublishedContent 对象或利用 ModelsBuilder < / strong>并对生成的特定类型的模型进行操作。

我的测试代码如下。这两个版本都适用于我的测试7.6.9解决方案。

// Dynamic object version - will be deprecated - don't use!
//var visibleChildItems = CurrentPage.Site().Children.Where("Visible");

// Strongly Typed version - suggested
var visibleChildItems = Model.Content.Site().Children(x => x.IsVisible());

<ul>
    @foreach (var item in visibleChildItems)
    {
        <li>
            <a href="@item.Url">@item.Name</a>
        </li>
    }
</ul>

希望它能解决您的问题。如果您对通过动态对象进行操作以及如何从中获取属性感兴趣,请检查一下,但仍然有效 Rambor Cheetsheet for Umbraco https://our.umbraco.org/projects/developer-tools/umbraco-v6-mvc-razor-cheatsheets

答案 1 :(得分:1)

我不能发表评论所以我会将此作为答案发布。我遇到过同样的问题。在我的情况下,我将默认值设置为选中,我认为是真的。我将默认设置为未选中。我去了umbracoNaviHide,然后检查了盒子,它对我来说很有效。我感谢你指出我正确的方向。