1

对于 Glass.Mapper BeginRenderLink被描述为渲染应该包含多个 HTML 元素的链接的方法:http: //glass.lu/docs/tutorial/sitecore/tutorial22/tutorial22.html

我想添加的是该链接的自定义属性(类、样式):

    <% using (BeginRenderLink(x => x.Image1Link, 
           new NameValueCollection 
           { { "class", "image-banner" }, { "style", string.Format("background-image: url({0})", Model.Image1.Src) } }, true))
       { %>
    <span class="image-banner-wrapper">
        <span class="image-banner-content"><%= Editable(x => x.Image1Text) %></span>
    </span>
    <% } %>

此附加属性在正常模式下工作正常,但在编辑模式下不显示。

以下是在 Glass.Mapper 源代码中为 BeginRenderLink 找到的内容:

    if (IsInEditingMode && isEditable)
    {
        return MakeEditable(field, null, model, "haschildren=true", _context, SitecoreContext.Database, writer);
    }
    else
    {
        return BeginRenderLink(field.Compile().Invoke(model) as Fields.Link, attrs, string.Empty, writer);
    }

所以如果是编辑模式,不应用附加属性,只传递“haschildren=true”。

我想知道有人以某种方式解决这个问题吗?

4

1 回答 1

0

看起来这是 Glass 的一个已知问题,并且已经有一个拉取请求等待处理(https://github.com/mikeedwards83/Glass.Mapper/pull/73)。

我想修复它的唯一方法是从 GitHub 获取最新版本进行修复并使用您的修复重新编译 Glass。否则,您可以等待拉取请求获得批准并更新您的 Glass 版本。如您所见,修复并不难(取自此处):

if (IsInEditingMode && isEditable)
{   
    if (attrs != null)
    {
        attrs.Add("haschildren", "true");
        return MakeEditable(field, null, model, attrs, _context, SitecoreContext.Database, writer);
    }

    return MakeEditable(field, null, model, "haschildren=true", _context, SitecoreContext.Database, writer);
 }
于 2014-08-13T10:54:20.750 回答