【问题标题】:Sitecore Glass Mapper Link Field cannot be edit by Page Editor Mode页面编辑器模式无法编辑 Sitecore Glass Mapper 链接字段
【发布时间】:2016-02-22 10:15:37
【问题描述】:

您好,我目前正在使用带有 MVC5.2.3 和 Glass Mapper 的 Sitecore 8.1 update 1。我在使用 Glass Mapper 链接字段时遇到了一些问题。我创建了一个源自标准渲染参数模板的模板,在该模板中我使用了 Sitecore General Link 字段。我也为此创建了模型:

我的模特:

[SitecoreType(TemplateId = "{912B074D-F8BA-4AA7-9276-016515A1ACE8}")]
public class RelatedArticleParams
{
     [SitecoreId]
     public virtual Guid Id { get; set; }

     public virtual string HeaderText { get; set; }

     [SitecoreField(FieldType = SitecoreFieldType.GeneralLink)]
     public Link Link { get; set; }
}

我的观点:

@{
    var parameters = GetRenderingParameters<RelatedArticleParams>();
}
<a href="@parameters.Link.Url" class="linkdark">@parameters.Text</a>

如果我在 Sitecore 后端添加来自演示详细信息的链接,一切都很好。但是当我在 Sitecore 页面体验编辑器中单击此组件并插入指向渲染参数的链接时,它会在页面顶部给出一个错误发生红线指示。我无法从页面编辑器模式插入链接。

请帮助我解决这个问题,无论是 Glass Mapper 错误还是我犯了任何错误??

谢谢。 感谢您的建议。

【问题讨论】:

  • 您的日志文件中是否有任何错误?检查浏览器控制台和进行的 AJAX/xhr 调用,并检查响应消息以告诉我们正在抛出什么错误。
  • 您的RelatedArticleParams 类有一个HeaderText 属性,但您的视图使用@parameters.Text。这只是创建 SO 问题时的一个错字还是真正的代码?
  • 使用 BeginRenderLink 或 Editable。

标签: sitecore sitecore8 asp.net-mvc-5.2 glass-mapper


【解决方案1】:

另一种选择是在代码中完成。

public class MyViewModel
{
    public HtmlString MyLink { get; set; }
}
public class MyController : Controller
{
    private readonly IGlassHtml _glassHtmlHelper;
    public void MyController()
    {
        _glassHtmlHelper = new GlassHtml(new SitecoreContext());
    }
    public ViewResult MyControllerAction()
    {
        var viewModel = new MyViewModel();
        //Get your item
        viewModel.MyLink = new HtmlString(_glassHtmlHelper.RenderLink<RelatedArticleParams>(contentItem, x => x.Link, isEditable: true));
        return View(viewModel);
    }
}

然后,在您的标记中,您所要做的就是:

@model MyViewModel
<div>
    @Model.MyLink
</div>

【讨论】:

    【解决方案2】:

    你应该使用
    @Editable(玻璃映射器的属性名称) //使用模型属性。

    Reference

    【讨论】:

      【解决方案3】:

      使用

      @RenderLink(x => x.Link)

      @using (BeginRenderLink(x => x.GeneralLink, isEditable: true))
      {
          @RenderImage(x => x.Image)
      }
      

      http://glass.lu/Mapper/Sc/Tutorials/Tutorial22

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多