0

尝试获取给定文档类型的孩子,但 umbracoNavihide 未设置为 false:

以下产生正确的输出。

@foreach (var child in root.Children.Where("ContentTypeAlias == \"DocumentTypehere\""))
{
    if (child.umbracoNaviHide == "False")
    {
        continue;
    }
    <li>@child.Name</li>
}

这不会:

@foreach (var child in root.Children.Where("umbracoNaviHide == @0 && ContentTypeAlias == \"DocumentTypehere\"","False"))
{
        <li>@child.Name</li>   
}
4

4 回答 4

2

umbracoNaviHide根据 Niels Hartvig 的话, Umbraco 5 不支持:

虽然这些特殊别名确实[sic] [recte: do] 做得很好并且超级容易使用(尽管如果你不偶然发现提到它们用法的文档,完全不可能发现),但问题在于它们'重新“魔术”字符串,这确实是一团糟(阅读:它们是核心内部的黑客)。

所以他们不会以我们从 v4 中知道的形式在 v5 中返回。

所以,除了 Linq 的模仿无论如何都被打破了,简短的回答是这个(任何一种形式)都不应该工作(Athul 的回答也不应该)。

长答案是,只有当您明确支持它作为文档类型的一部分时,您才能使用此属性(以及其他类似的属性)。但是,有一个功能请求,如果您愿意关注并支持它,请在此处请求“内置”umbraco...属性。

但是,我个人会要求您不要这样做。因为使用这些属性并依赖它们是有问题的(尤其是尼尔斯本人提到的一点)。制作您自己的专用属性,为其任务适当地别名。

于 2012-04-27T15:18:46.723 回答
0

你可以简单地这样做

@foreach (var child in root.Children.Where("umbracoNaviHide != true &&  NodeTypeAlias == \"DocumentTypehere\" ")
{
    <li>@child.Name</li>   
}
于 2012-04-26T04:59:03.783 回答
0

只是添加另一种方法 - 一些现有的答案对我不起作用 - 你可以试试这个。在 Umbraco 4.11 中为我工作

@foreach (var child in root.Children.Where(child => child.GetPropertyValue("umbracoNaviHide") == "0"))
{
..
}
于 2013-01-30T14:03:12.097 回答
0

您可以在 umbracoNaviHide 上写下您的支票:

if (!child.umbracoNaviHide)
{
    continue;
}
<li>@child.Name</li>
于 2012-05-20T22:42:32.633 回答