繁体   English   中英

在umbraco中渲染子页面

[英]Render children pages in umbraco

我正在尝试制作一个常见问题页面。 内容结构如下:

  • 常见问题解答-问题1-问题2-问题3

我似乎无法弄清楚如何使子模板呈现(我是新手)。

常见问题解答条目(父页面)

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    Layout = null;
    var faqContentId = (int)CurrentPage.faqContent;
}

<html>
    @Html.Partial("head")
    <body>
        @Html.Partial("header")

        <div class="content">
            @{
                foreach (var child in Umbraco.Content(1168).Children) {
                    // render children here
                }
            }
        </div>

        @Html.Partial("footer")
    </body>
</html>

常见问题解答条目(子页面)

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

<div class="accordion" id="accordionExample">
    <div class="card">
        <div class="card-header" id="headingOne">
            <h5 class="mb-0">
            <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                @Umbraco.Field("title")
            </button>
        </h5>
    </div>

    <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
        <div class="card-body">
            @Umbraco.Field("answer")
        </div>
    </div>
</div>

它应该类似于@ Html.Partial(“ FAQ Entry”,child),其中第二个参数是要传递到部分视图的模型(子对象)。

欢迎我亲爱的Umbraco开发人员。 让我为您指出几个方向:

如果只需要解决方案,请跳至第3位。

1)不要使用@inherits Umbraco.Web.Mvc.UmbracoTemplatePage ,因为它将很快被弃用。 使用@inherits Umbraco.Web.Mvc.UmbracoViewPage代替,这将使您在视图中获得强类型化的内容,并且代码将类似于@ Model.GetPropertyValue(“ myValue”)

更好的是,创建一个自定义模型或尝试使用Umbraco ModelsBuilder

使用强类型模型可以使代码更简洁,绑定更牢固。 但这是另一天。

2)我建议不要通过id Umbraco.Content('id').Children获取节点。 原因是,如果出于某种原因删除了该节点,然后稍后再使用相同的名称再次创建该节点,则ID将有所不同,并且您的代码将破坏网站。

在此页面上,人们向我指出了遍历umbraco的正确方法Umbraco遍历

它讨论了速度,但它基本上向您显示了正确的遍历方法。 您还可以在Umbraco的文档中找到所需的其余部分。

3)到一个实际的问题:我假设您所在的页面是父页面,而您只是想抓住孩子。 然后就这么简单:

var collection = Model.Content.Children();
@foreach (var child in collection ) {

    child.GetPropertyValue("yourValueAliasHere")
}

如果您使用的是@inherits Umbraco.Web.Mvc.UmbracoViewPage您将拥有:

var collection = Model.Children();
@foreach (var child in Model.Children()) {

    child.GetPropertyValue("yourValueAliasHere")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM