我正在尝试制作一个常见问题页面。内容结构如下:
尽管如此,我似乎仍无法弄清楚如何使子模板呈现(我是新手)。
常见问题解答条目(父页面)
@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>
答案 0 :(得分:0)
它应该类似于@ Html.Partial(“ FAQ Entry”,child),其中第二个参数是要传递到部分视图的模型(子对象)。
答案 1 :(得分:0)
欢迎我亲爱的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 traversing的正确方法
它讨论速度,但基本上也向您显示了正确的遍历方法。您还可以在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")
}