我正在尝试使用MVC获取Sitecore 8项目,我收到以下错误:
编译器错误消息:CS0103:当前上下文中不存在名称“RenderLink”
我有参考(来自nuget包)
我已经尝试了views / web.config的一些内容。也许有冲突?
<namespaces>
<add namespace="Sitecore.Mvc" />
<add namespace="Sitecore.Data.Items" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="TDSExample.Web" />
<add namespace="TDSExample.Entities.Ids" />
<add namespace="Glass.Mapper.Sc" />
</namespaces>
我已清除Sitecore缓存。我不确定我错过了什么。 以下是视图/渲染的缩减版本:
@model Glass.Mapper.Sc.Web.Mvc.GlassView
<TDSExample.Entities.Templates.Header.Header>
@using Glass.Mapper.Sc @{ Layout = null; var dataSource = Sitecore.Context.Database.GetItem(Sitecore.Mvc.Presentation.RenderingContext.Current.Rendering.DataSource) ?? Sitecore.Context.Item; }
<h1>@Model.Editable(x => x.Title, dataSource)</h1>
<p>
@Model.Editable(x => x.Subtitle, dataSource)
</p>
@RenderLink(x => x.ReadMoreLink, dataSource, new { @class = "read-more" })
以下是渲染的缩减版本:
@model Glass.Mapper.Sc.Web.Mvc.GlassView
<TDSExample.Entities.Templates.Header.Header>
@using Glass.Mapper.Sc @{ Layout = null; var dataSource = Sitecore.Context.Database.GetItem(Sitecore.Mvc.Presentation.RenderingContext.Current.Rendering.DataSource) ?? Sitecore.Context.Item; }
<h1>@Model.Editable(x => x.Title, dataSource)</h1>
<p>
@Model.Editable(x => x.Subtitle, dataSource)
</p>
@RenderLink(x => x.ReadMoreLink, dataSource, new { @class = "read-more" })
测试字段渲染得很好。我必须在某个地方错过参考。使用“@using Glass.Mapper.Sc”或“@using Glass.Mapper.Sc/Mvc”会阻止VS将其突出显示为错误。 我只是看不出我错过了什么。任何帮助表示赞赏。
答案 0 :(得分:3)
更改此
@model Glass.Mapper.Sc.Web.Mvc.GlassView<TDSExample.Entities.Templates.Header.Header>
进入这个
@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<TDSExample.Entities.Templates.Header.Header>
并访问视图上的方法而不是模型:
@Editable(m => m.Title)
@RenderLink(m => m.ReadMoreLink)
<!--this should work as well for links-->
@Editable(m => m.ReadMoreLink)
添加了奖励:您不必将布局设置为null。确保你没有可能导致此问题的_ViewStart.cshtml。