Sitecore MVC ViewRendereing 和 GlassMapper

Sitecore MVC ViewRendereing and GlassMapper

我想在 Sitecore 8 MVC 上创建一个基于 Razor 的面包屑导航。 我创建了一个页面模板,其中包含一些 属性 将用于它。 视图渲染已创建并添加到布局项(页面)。 我已经使用 while loop

为这个渲染创建了一个 cshtml 文件
 <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

我创建了一个具有祖先访问权限的 class

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; }
}

但我不知道如何 'say' 将 sitecore 用于我的视图渲染。 我没有任何特定的页面控制器。

是否可以将玻璃映射器与视图渲染结合使用?

这通常是通过视图顶部的 inherits 指令完成的:

@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);