Sitecore MVC ViewRendereing и GlassMapper
Я хотел бы создать крошку на основе Razor на Sitecore 8 MVC. Я создал шаблон страницы с некоторым свойством, которое будет использоваться для него. Вид рендеринга создан и добавлен в элемент макета (страницу). Я создал файл cshtml для этого рендеринга с циклом while
<ul>
@{
var parentItem = Html.Sitecore().CurrentItem;
while (parentItem != null)
{
if (parentItem["Include in breadcrumb"] != "0")
{
<li>@parentItem["Short Title"]</li>
}
parentItem = parentItem.Parent;
}
}
</ul>
Но это выглядит не очень оптимально для меня, я хотел бы использовать Glass Mapper для него
Я создал класс с доступом к предкам
public class Breadcrumb
{
[SitecoreQuery("ancestor-or-self::*[@#Include in breadcrumb#='1']", IsRelative = true)]
public virtual IEnumerable<Breadcrumb> Ancestors { get; set; }
[SitecoreField(FieldName = "Include in breadcrumb")]
public virtual bool IncludeIn { get; set; }
[SitecoreField(FieldName = "Short Title")]
public virtual string Title { get; set; }
}
но я не знаю, как "сказать", чтобы sitecore использовал его для моего рендеринга View. У меня нет конкретного контроллера для страницы.
Можно ли использовать какой-нибудь стеклянный маппер с View рендерингом?
2 ответа
Обычно это делается с помощью директивы наследников в верхней части вашего представления:
@using Glass.Mapper.Sc.Web.Mvc
@inherits GlassView<Breadcrumb>
Тогда на странице вы можете использовать свою модель как обычно; если для случая вы хотите, чтобы ваш редактор титульных страниц был дружественным, - вы можете использовать следующую конструкцию для доступа к свойствам вашей модели:
@Editable(x=>x.Title)
Мартин прав. Однако, если вы используете Glass v4, обратите внимание, что вы не обязаны наследовать от GlassView
и вместо этого можно использовать более естественный @model
+ @Html
Синтаксис HtmlHelper, если хотите.
@Html.Glass().Editable(x => x.Title);