在Umbraco 4.11中按Id渲染节点

时间:2013-10-09 09:59:39

标签: asp.net xml razor webforms umbraco

TL; DR 如何按节点ID呈现内容项。

我正在使用Umbraco的Widget Grid管理扩展来配置内容可管理的小部件区域,而我却试图渲染已配置的小部件。

我有一个节点ID的列表,我想在页面上呈现,但我可以在我的生活中找出如何做到这一点。

非常感谢任何指导!感谢。

更新

Models属性中包含的Xml

<WidgetGrid> 
    <col1> <nodeId>4839</nodeId> <nodeId>4844</nodeId> <nodeId>4845</nodeId> </col1>
</WidgetGrid>

一旦我进入col1,似乎停止使用DynamicXml类型并将其作为字符串吐出......不知道。

1 个答案:

答案 0 :(得分:1)

大概你是在宏中做这个,我假设你有一个多节点选择器集来将Id值存储为CSV:

@{
    string[] widgetIds = ((string)Model.Widgets).Split(',');

    foreach (var id in widgetIds)
    {
        var widget = Model.NodeById(id);

        @RenderPage("~/macroscripts/widgets/" + widget.NodeTypeAlias
                         + ".cshtml", widget);
    }
}

这将允许您在多节点选择器中选择不同类型的窗口小部件,并为每个窗口小部件提供不同的视图。

这也使用了动态方法,但你可以通过交换第一行来轻松地调整它:

string[] podIds = CurrentModel.GetProperty<string>("widgets").Split(',');

鉴于该属性存储为XML,您可以使用本文(http://umbraco.com/follow-us/blog-archive/2011/2/28/umbraco-razor-feature-walkthrough-%E2%80%93-part-3)中描述的表示法:

foreach (var id in Model.widgets.col1[0].nodeId)
{
    ...
}