【问题标题】:Render Node by Id in Umbraco 4.11在 Umbraco 4.11 中按 ID 渲染节点
【发布时间】:2013-10-16 14:56:50
【问题描述】:

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

我正在使用 Umbraco 的 Widget Grid 管理扩展来配置内容可管理的小部件区域,但我一直在尝试渲染配置的小部件。

我有一个要在页面上呈现的节点 ID 列表,但我可以终生弄清楚如何做到这一点。

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

更新

Models 属性中包含的 Xml

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

一旦我进入 col1,它似乎不再是 DynamicXml 类型,而是将其作为字符串吐出......不知道。

【问题讨论】:

  • 网络表单(很遗憾)

标签: asp.net xml razor webforms umbraco


【解决方案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)
{
    ...
}

【讨论】:

  • 它将 Id 存储为 xml,到一个点。我在问题中添加了 XML。
  • 如果您使用多节点选择器,请切换到 CSV 而不是 xml。然后你就可以在,上拆分nodeid了,记得重新发布看看你的节点数据的变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多