我想在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渲染的玻璃贴图?
答案 0 :(得分:5)
这通常是通过视图顶部的inherits指令完成的:
@using Glass.Mapper.Sc.Web.Mvc
@inherits GlassView<Breadcrumb>
然后在页面上,您可以正常使用您的模型;如果,对于一个案例,你想让你的标题页面编辑器友好 - 那么你可以使用以下结构来访问你的模型属性:
@Editable(x=>x.Title)
答案 1 :(得分:3)
GlassView
,而是可以根据需要使用更自然的@model
+ @Html
HtmlHelper语法。
@Html.Glass().Editable(x => x.Title);