[英]Render children pages in umbraco
我正在尝试制作一个常见问题页面。 内容结构如下:
我似乎无法弄清楚如何使子模板呈现(我是新手)。
常见问题解答条目(父页面)
@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.