Glass Mapper MVC:当前上下文中不存在名称“RenderLink”

时间:2015-09-07 22:16:44

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

我正在尝试使用MVC获取Sitecore 8项目,我收到以下错误:

  

编译器错误消息:CS0103:当前上下文中不存在名称“RenderLink”

我有参考(来自nuget包)

  • Castle.Core
  • Glass.Mapper
  • Glass.Mapper.Sc
  • Glass.Mapper.Sc.Mvc

我已经尝试了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将其突出显示为错误。 我只是看不出我错过了什么。任何帮助表示赞赏。

1 个答案:

答案 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。