Asp.net 在Umbraco 4.11中按Id渲染节点

Asp.net 在Umbraco 4.11中按Id渲染节点,asp.net,xml,razor,webforms,umbraco,Asp.net,Xml,Razor,Webforms,Umbraco,TL;DR如何按节点Id呈现内容项 我正在使用Umbraco的Widget Grid admin extension来配置一个内容可管理的Widget区域,我一直在尝试呈现配置好的Widget 我有一个节点id的列表,我想在页面上呈现,但我可以为我的生活解决如何做到这一点 非常感谢您的指导!谢谢 更新 Models属性中包含的Xml <WidgetGrid> <col1> <nodeId>4839</nodeId> <nodeId&

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

我正在使用Umbraco的Widget Grid admin extension来配置一个内容可管理的Widget区域,我一直在尝试呈现配置好的Widget

我有一个节点id的列表,我想在页面上呈现,但我可以为我的生活解决如何做到这一点

非常感谢您的指导!谢谢

更新

Models属性中包含的Xml

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

4839 4844 4845 

一旦我开始讨论col1,它似乎不再是DynamicXml类型,而是以字符串的形式输出。。。不知道。

您可能是在宏中执行此操作,我假设您设置了一个多节点选择器,将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(',');

Webforms(不幸的是)在某种程度上将Id存储为xml。我在问题中添加了XML。如果使用多节点选择器,请切换到CSV而不是XML。然后您可以在
上拆分节点ID,记住重新发布以查看节点数据中的更改。
foreach (var id in Model.widgets.col1[0].nodeId)
{
    ...
}