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);
Другие вопросы по тегам