umbracoNaviHide 不适用于新项目
umbracoNaviHide doesn't work on new project
我最近的所有项目都在 True/False 属性 中实现了 umbracoNaviHide,它们都运行良好。在我的 7.6.9 升级项目中,我根本无法使用 True/False 值。
在我的主作文中,我有一个 "Navigation" 选项卡和一个 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
这怎么可能?
好的,现在一切都清楚了:)
您正在使用 动态 对象并且您试图将它们视为 IPublishedContent。如果它们没有正确映射,它会表现得很奇怪和不可预测。
由于在以下 Umbraco 版本中将删除动态对象,我建议使用强类型 IPublishedContent 对象或利用 ModelsBuilder 并对特定类型的生成模型进行操作。
我的测试代码如下。这两个版本都适用于我的测试 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>
希望它能解决您的问题。如果您对通过动态对象进行操作以及如何从它们获取属性感兴趣,请查看有点旧但仍然有效的 Razor Cheetsheet for Umbraco:https://our.umbraco.org/projects/developer-tools/umbraco-v6-mvc-razor-cheatsheets.
我无法发表评论,所以我将 post 作为答案。我遇到过同样的问题。在我的例子中,我将默认值设置为选中,我认为这是真的。我将默认设置为未选中。我去了 umbracoNaviHide,然后选中了复选框,它非常适合我。非常感谢您为我指明了正确的方向。
我最近的所有项目都在 True/False 属性 中实现了 umbracoNaviHide,它们都运行良好。在我的 7.6.9 升级项目中,我根本无法使用 True/False 值。
在我的主作文中,我有一个 "Navigation" 选项卡和一个 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
这怎么可能?
好的,现在一切都清楚了:)
您正在使用 动态 对象并且您试图将它们视为 IPublishedContent。如果它们没有正确映射,它会表现得很奇怪和不可预测。
由于在以下 Umbraco 版本中将删除动态对象,我建议使用强类型 IPublishedContent 对象或利用 ModelsBuilder 并对特定类型的生成模型进行操作。
我的测试代码如下。这两个版本都适用于我的测试 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>
希望它能解决您的问题。如果您对通过动态对象进行操作以及如何从它们获取属性感兴趣,请查看有点旧但仍然有效的 Razor Cheetsheet for Umbraco:https://our.umbraco.org/projects/developer-tools/umbraco-v6-mvc-razor-cheatsheets.
我无法发表评论,所以我将 post 作为答案。我遇到过同样的问题。在我的例子中,我将默认值设置为选中,我认为这是真的。我将默认设置为未选中。我去了 umbracoNaviHide,然后选中了复选框,它非常适合我。非常感谢您为我指明了正确的方向。