玻璃.Mapper没有在BeginRenderLink方法中应用额外的参数

本文关键字:应用 参数 方法 Mapper BeginRenderLink 玻璃 | 更新日期: 2023-09-27 18:17:52

For 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 source for 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"。

我想知道有没有人能解决这个问题?

玻璃.Mapper没有在BeginRenderLink方法中应用额外的参数

似乎这是一个已知的Glass问题,并且已经有一个正在等待的pull请求(https://github.com/mikeedwards83/Glass.Mapper/pull/73)。

我想修复它的唯一方法是从GitHub获得最新版本,使修复和重新编译你的修复眼镜。否则,你可以等待pull请求获得批准,然后更新你的谷歌眼镜版本。正如您所看到的,修复并不难(从这里开始):

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);
 }