玻璃.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"。
我想知道有没有人能解决这个问题?
似乎这是一个已知的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);
}