#razor #umbraco
#razor #umbraco
Вопрос:
Я хочу отобразить сетку Umbraco в мега меню, и я не могу использовать @currentPage.GetGridHtml(«») в этом сценарии. Мне нужно получить ее, используя переменную узла: myNode.getProperty(«menuGrid»)
Каков наилучший способ сделать это?
Ответ №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")
Комментарии:
1. Спасибо. Моя проблема в том, что у меня нет доступа к currentPage. В меню отображается список стран, и при наведении курсора мыши на страну будет отображаться сетка. (У каждой страны своя сетка) Так обычно (как и с любым другим свойством) Я бы перебрал список своих стран и динамически отображал сетку для каждой из них. Здесь я не могу найти способ сделать это.
2. Хм, где вы отображаете эти данные? В template / view вы должны иметь возможность использовать currentPage или Model. Содержимое или, по крайней мере, создайте экземпляр класса UmbracoHelper и сделайте это с помощью назначенного элемента содержимого. Если я правильно помню, вы также можете сделать это: @Html.GetGridHtml(…) и передать модель с псевдонимом свойства, из которого вы хотите получить HTML-таблицу.
Ответ №2:
Предложения Марчина помогли найти решение.
На всякий случай, если кто-то ищет что-то подобное, у меня был свой индекс, у которого нет доступа к GetGridHtml. После преобразования в типизированный контент я восстановил доступ к этому свойству
foreach (var country in countryNode.ChildrenAsList)
{
var myNode = Umbraco.TypedContent(country.Id);
var property = myNode.GetGridHtml("menuGrid");
}