Umbraco部分视图 - 调用子元素的子元素

时间:2016-06-08 14:26:00

标签: c# umbraco partial-views

我需要使用Partial视图调用Umbraco中子元素的子元素。

我有一个页面(主页),我可以在其中添加一个元素(行),我将另一个元素添加到行(Col)

即。

  1. 主页
    1.1行> 1.1.1 Col1, 1.1.2 Col2

    1.2行> 1.2.1 Col1, 1.2.2 Col2, 1.2.3 Col3,

  2. 我有部分视图来调用行 -

    @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”); //子元素名称

    由于

1 个答案:

答案 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><!--/.-->


            }

        }