TL; DR 如何按节点ID呈现内容项。
我正在使用Umbraco的Widget Grid管理扩展来配置内容可管理的小部件区域,而我却试图渲染已配置的小部件。
我有一个节点ID的列表,我想在页面上呈现,但我可以在我的生活中找出如何做到这一点。
非常感谢任何指导!感谢。
更新
Models属性中包含的Xml
<WidgetGrid>
<col1> <nodeId>4839</nodeId> <nodeId>4844</nodeId> <nodeId>4845</nodeId> </col1>
</WidgetGrid>
一旦我进入col1,似乎停止使用DynamicXml类型并将其作为字符串吐出......不知道。
答案 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)
{
...
}