我需要使用Partial视图调用Umbraco中子元素的子元素。
我有一个页面(主页),我可以在其中添加一个元素(行),我将另一个元素添加到行(Col)
即。
主页
1.1行>
1.1.1 Col1,
1.1.2 Col2
1.2行> 1.2.1 Col1, 1.2.2 Col2, 1.2.3 Col3,
我有部分视图来调用行 -
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var root = Model.Content;
var rowsPage = root.Descendants("Row"); //Child Element Name
if(rowsPage.Count()>0)
{
<div class="container">
@foreach(var node in rowsPage)
{
<div class="row" style="background:red; margin-top:30px;">
@(Html.Partial("Columns"))
</div><!--/.row-->
}
</div><!--container-->
}
}
因此,这将显示作为主页的子元素的行数,即2
然后在这里我想调用另一个显示列
的局部视图@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var root = Model.Content;
var columns = root.Descendants("col"); //Child Element Name
//var columns = CurrentPage.Descendants("col"); //Child Element Name
if(columns.Count()>0)
{
<div class="">
@foreach(var node in columns)
{
<div class="@(node.GetPropertyValue("columnWidth"))" style="border:1px solid red">
<h2>@(node.GetPropertyValue("colTitle"))</h2>
<p>@(node.GetPropertyValue("colBody"))</p>
<p><a class="btn btn-default" href="@(node.GetPropertyValue("colButtonLink"))" role="button">@(node.GetPropertyValue("colButtonText"))</a></p>
</div><!--/.col-->
}
</div><!--/.-->
}
}
所以第一行包含2列,第二行包含3.但是目前使用此代码它显示2行但包括两者中的所有cols。
我认为以下几行我只需要调用行的子元素,但我不确定如何执行此操作。
var root = Model.Content; var columns = root.Descendants(“col”); //子元素名称
由于
答案 0 :(得分:0)
首先尝试理解&#34; Descendants&#34;与#34;儿童&#34;。请尝试这个例子:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var root = Model.Content;
var rowsPage = root.Children("Row"); //Child Element Name
if(rowsPage.Count()>0)
{
<div class="container">
@foreach(var node in rowsPage)
{
<div class="row" style="background:red; margin-top:30px;">
@(Html.Partial("Columns",node))
</div><!--/.row-->
}
</div><!--container-->
}
}
然后是列部分视图:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var rowNode = Model;
var columns = rowNode.Children("col"); //Child Element Name
//var columns = CurrentPage.Descendants("col"); //Child Element Name
if(columns.Count()>0)
{
<div class="">
@foreach(var node in columns)
{
<div class="@(node.GetPropertyValue("columnWidth"))" style="border:1px solid red">
<h2>@(node.GetPropertyValue("colTitle"))</h2>
<p>@(node.GetPropertyValue("colBody"))</p>
<p><a class="btn btn-default" href="@(node.GetPropertyValue("colButtonLink"))" role="button">@(node.GetPropertyValue("colButtonText"))</a></p>
</div><!--/.col-->
}
</div><!--/.-->
}
}