Sitecore MVC ViewRendereing和GlassMapper

时间:2015-08-11 09:00:15

标签: razor sitecore glass-mapper sitecore-mvc sitecore8

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

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

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

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

但我不知道怎么说&#39;到sitecore使用它进行我的视图渲染。 我没有任何特定的页面控制器。

是否可以使用一些带有View渲染的玻璃贴图?

2 个答案:

答案 0 :(得分:5)

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

@using Glass.Mapper.Sc.Web.Mvc
@inherits GlassView<Breadcrumb>

然后在页面上,您可以正常使用您的模型;如果,对于一个案例,你想让你的标题页面编辑器友好 - 那么你可以使用以下结构来访问你的模型属性:

@Editable(x=>x.Title)

答案 1 :(得分:3)

马丁是对的。但是,如果您正在使用Glass v4,请注意,您无需继承GlassView,而是可以根据需要使用更自然的@model + @Html HtmlHelper语法。

@Html.Glass().Editable(x => x.Title);