我最近的所有项目都在一个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
这可能是怎么回事?
答案 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,然后检查了盒子,它对我来说很有效。我感谢你指出我正确的方向。