2016-10-21 31 views
0

我想在Mega菜单中显示Umbraco网格,并且在这种情况下我不能使用@CurrentPage.GetGridHtml(“”)。 我需要使用节点变量:myNode.GetProperty(“menuGrid”)在Mega菜单中显示Umbraco网格

要做到这一点的最佳方法是什么?

回答

1

您可以使用各种方式从网格获取内容。他们都在这里描述:https://our.umbraco.org/documentation/getting-started/backoffice/property-editors/built-in-property-editors/grid-layout/render-grid-in-template

在我看来,最好的方法是创建自定义网格视图/渲染器,并在此处使用适当的方法来检索内容。

@CurrentPage.GetGridHtml(Html, "yourGridPropertyAlias", "customgridview") 
@CurrentPage.GetGridHtml(Html, "yourGridPropertyAlias", "/views/othercustomgridview.cshtml") 
+0

谢谢。我的问题是我没有访问CurrentPage。菜单显示国家列表,当您悬停在国家时,将显示网格。 (每个国家都有自己的网格) 因此,通常情况下(与其他所有属性一样),我会遍历我的国家/地区列表并为其中的每个国家/地区动态显示网格。在这里我找不到一种方法。 – mirosz

+0

嗯,你正在渲染这些数据?在模板/视图上,您​​应该可以使用CurrentPage或Model.Content或至少实例UmbracoHelper类,并通过分配的内容项来执行此操作。如果我没有记错的话,你也可以这样做:@ Html.GetGridHtml(...)并传递你想要抓取网格html的属性别名的模型。 –

0

Marcin的建议对寻找解决方案很有帮助。

为了以防有人正在寻找类似的东西,我让我的INode没有访问GetGridHtml。在转换为打印内容后,我重新获得了该属性

foreach (var country in countryNode.ChildrenAsList) 
               { 
                var myNode = Umbraco.TypedContent(country.Id); 
                var property = myNode.GetGridHtml("menuGrid"); 
               }