umbracoNaviHide不';我不能从事新项目

umbracoNaviHide不';我不能从事新项目,umbraco,umbraco7,Umbraco,Umbraco7,我最近的所有项目都在True/False属性中实现了umbracoNaviHide,它们都工作得很好。在我的7.6.9升级项目中,我根本无法获得正确/错误的值 在我的主构图中,我有一个“导航”选项卡和一个True/False属性。我所有的书页都是从那篇文章继承下来的 当我做以下事情时: var menuItems = CurrentPage.Site().Children; @foreach(var item in menuItems) { if(item.IsVisible()) {

我最近的所有项目都在True/False属性中实现了umbracoNaviHide,它们都工作得很好。在我的7.6.9升级项目中,我根本无法获得正确/错误的值

在我的主构图中,我有一个“导航”选项卡和一个True/False属性。我所有的书页都是从那篇文章继承下来的

当我做以下事情时:

var menuItems = CurrentPage.Site().Children;

@foreach(var item in menuItems) {
    if(item.IsVisible()) {
        <!--show element-->
    }
}
但是,这是如何在后台设置
umbracanavihide

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

这怎么可能呢?

好了,现在一切都清楚了:)

您正在使用动态对象,并试图将它们视为i发布内容。如果它们没有正确映射,则会表现出怪异和不可预测的行为

由于以下Umbraco版本中将删除动态对象,我建议使用强类型的I发布内容对象,或利用对特定类型的生成模型进行操作

我的测试代码如下。这两个版本都适用于我的测试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>
//动态对象版本-将被弃用-不要使用!
//var visibleChildItems=CurrentPage.Site().Children.Where(“可见”);
//强类型版本-建议
var visibleChildItems=Model.Content.Site().Children(x=>x.IsVisible());
    @foreach(visibleChildItems中的变量项) {
  • }

希望它能解决你的问题。如果您对通过动态对象进行操作以及如何从动态对象获取属性感兴趣,请检查有点旧但仍然有效的Umbraco剃须刀奶酪片。

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

您正在使用动态对象,并试图将它们视为i发布内容。如果它们没有正确映射,则会表现出怪异和不可预测的行为

由于以下Umbraco版本中将删除动态对象,我建议使用强类型的I发布内容对象,或利用对特定类型的生成模型进行操作

我的测试代码如下。这两个版本都适用于我的测试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>
//动态对象版本-将被弃用-不要使用!
//var visibleChildItems=CurrentPage.Site().Children.Where(“可见”);
//强类型版本-建议
var visibleChildItems=Model.Content.Site().Children(x=>x.IsVisible());
    @foreach(visibleChildItems中的变量项) {
  • }


希望它能解决你的问题。如果您对通过动态对象进行操作以及如何从中获取属性感兴趣,请检查有点旧但仍然有效的Umbraco剃须刀奶酪纸。

我无法留下评论,因此我将作为答案发布。我也有同样的问题。在我的例子中,我将默认值设置为checked,我假设这是真的。我将默认设置为未选中。我去了umbracoNaviHide,然后选中了复选框,它对我来说非常有效。我非常感谢你给我指出了正确的方向。

我不能留下评论,所以我会将此作为答案发布。我也有同样的问题。在我的例子中,我将默认值设置为checked,我假设这是真的。我将默认设置为未选中。我去了umbracoNaviHide,然后选中了复选框,它对我来说非常有效。非常感谢您为我指明了正确的方向。

所以您想列出根本不存在的孩子吗?:)您可以随时检查是否有子项.Any(x=>x.IsVisible())或类似项。那么问题解决了吗?@MarcinZajkowski呃不,我想使用umbracoNaviHide创建元素菜单,这些元素应该根据属性的值显示/隐藏。您可以尝试将子元素与.children(x=>x.IsVisible())结合使用吗?@MarcinZajkowski
CurrentPage.Site().children(x=>x.IsVisible())
给我的结果与其他结果完全相同。这很奇怪。我会尽量找时间自己检查一下。会让你知道的!因此,您想列出根本不存在的子项吗?:)您可以随时检查是否有子项.Any(x=>x.IsVisible())或类似项。那么问题解决了吗?@MarcinZajkowski呃不,我想使用umbracoNaviHide创建元素菜单,这些元素应该根据属性的值显示/隐藏。您可以尝试将子元素与.children(x=>x.IsVisible())结合使用吗?@MarcinZajkowski
CurrentPage.Site().children(x=>x.IsVisible())
给我的结果与其他结果完全相同。这很奇怪。我会尽量找时间自己检查一下。会让你知道的!我不明白你怎么能把这个写下来作为答案。我清楚地写道,这对我来说不起作用。甚至在我尝试过的许多例子中都列出了它。我试图将它们视为动态内容和I发布内容,正如您在我的示例中清楚看到的那样。两种我都试过了。如果你需要做一个答案,至少要想出一些新的东西。我把它作为一个答案分享给大家,把代码示例放在那里。那你一定是在别的地方做错了什么。我无法在动态对象上调用Children.Where(x=>…),所以我不知道您在代码中是如何实现的。与示例中为动态对象调用的IPPublishedContent的扩展方法相同。也许你的缓存有问题?你重新发布了整个网站吗?对我来说一切正常。如果你愿意,我可以分享这个例子中的代码。我确实重新发布了整个网站。是的。你能给我看一下你的文档类型和内容节点结构吗?我自己已经确认了。我创建了一个新项目,它在文档类型和内容节点方面完全相同。它工作得很好。在真实的项目中,我根本无法从合成主文档类型访问任何属性。至少您知道在哪里可以进一步查看。检查组合是否正确应用,以及在执行casti时IPPublishedContent对象的内部内容
Ticked - Our offers
Not ticked - Technology
Ticked - Projects
Not ticked - About us
Not ticked - Gallery
Ticked - Contact
// 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>