显示查询构建器

时间:2017-08-22 09:34:05

标签: c# html razor umbraco dropdown

我正在尝试使用查询构建器在Umbraco 7中创建一个下拉列表。下拉列表是导航栏的一部分,其中包含指向其他页面的链接。该页面包含带有Razor代码的HTML。

@{
                            var selection = Model.Content.Site().FirstChild("Sprog").Children()
                                                .Where(x => x.IsVisible());
                        }
                        <ul class="sf-menu well" data-type="navbar">
                            @foreach(var item in selection){
                                if(item.Name == "Sommerhuse") {
                                    <li>
                                        <a href="@item.Url">Sommerhuse</a>
                                            @{
                                                var selection2 = Umbraco.TypedContent(1090).Children()
                                                                    .Where(x => x.IsVisible());
                                            }
                                            <ul>
                                                @foreach(var sommerhus in selection2){
                                                    <li>
                                                        <a href="@sommerhus.Url">@sommerhus.Name</a>
                                                    </li>
                                                }
                                            </ul>
                                    </li>
                                } else {
                                    <li>
                                    <a href="@item.Url">@item.Name</a>
                                </li>
                                }

                            }
                        </ul>

我尝试将另一个查询构建器与下拉到我的导航栏查询构建器所需的内容嵌套并迭代

但是这仍然没有创建下拉列表。相反,它只返回一个静态链接,其中应显示下拉列表。在我的HTML原型中,下拉列表可以正常使用此代码。

<nav class="nav pull-right">
                        <ul class="sf-menu well" data-type="navbar">
                            <li class="active">
                                <a href="index.html">Forside</a>
                            </li>
                            <li>
                                <a href="index-1.html">Lejebetingelser</a>

                            </li>
                            <li>
                                <a href="index-2.html">Sommerhuse</a>
                                <ul>
                                    <li>
                                        <a href="sommerhus.html">Blokhus</a>
                                    </li>
                                    <li>
                                        <a href="#">Hvide Sande</a>
                                    </li>
                                    <li>
                                        <a href="#">Langeland</a>
                                    </li>
                                    <li>
                                        <a href="#">Marielyst</a>
                                    </li>
                                    <li>
                                        <a href="#">Ebeltoft</a>
                                    </li>
                                    <li>
                                        <a href="#">Rørvig</a>
                                    </li>
                                    <li>
                                        <a href="#">Bogense</a>
                                    </li>
                                </ul>
                            </li>

                            <li class="">
                                <a href="index-4.html">Kontakt</a>
                            </li>
                            <li>

                            </li>
                        </ul>
                    </nav>

对于格式错误的抱歉,由于某些原因,Visual Studio拒绝自动格式化.cshtml文件。

1 个答案:

答案 0 :(得分:0)

您的剃须刀脚本中没有<nav class="nav pull-right">

提示:不要比较页面名称,因为如果内容编辑器更改节点名称,这将打破您的下拉列表。

if(item.Name == "Sommerhuse") { // BAD IDEA

而是使用documentTypeAlias(如果它是另一种文档类型)

if(item.DocumentTypeAlias == "aliasOfTheDocumentType") { // much safer

仅当页面具有特殊文档类型时才会起作用。