Episerver始终在标记中包装共享块。我想摆脱这个。因此,如果在我的LinkBlock中有一个只有
的模板
<a href="#"
&GT;链接</a
&GT;
我不会得到一个
<div
&GT; <a href="#"
&GT;链接</a
&GT; </div
&GT;
在用户的视图中。
如果无法做到这一点,我该如何更改<div
&gt;到任何其他标签,或在其上放置一个CssClass。就像在不共享的块中一样可能:
<EPiServer:Property runat="server" PropertyName="RightContentArea" CustomTagName="aside" CssClass="column-2 sidebar"
&GT; </EPiServer:Property
&GT;
答案 0 :(得分:3)
我相信它是ContentArea属性的渲染,它在它包含的块周围添加div标签。
一个可能的解决方案可能是您自己做custom rendering of content areas,但根据您使用的块模板的类型,编辑工作可能会很棘手。链接中的示例用于渲染多个相同类型的块。
答案 1 :(得分:2)
我在cshtml中使用这个技巧:
@RenderBlocks(Model.CurrentPage.Content1)
@* ---------------------------------------------------------------------------------- *@
@* Render ContentArea without addition DIVs that EpiServer embed. That breaks layout a lot. *@
@helper RenderBlocks(EPiServer.Core.ContentArea content) {
if(null != content){
var blocks = content.FilteredContents.ToArray();
foreach(var block in blocks){
@Html.PropertyFor(x => block)
}
}
}
答案 2 :(得分:1)
您可以使用属性控件的 CustomTagName 和 CssClass 属性来设置容器元素的格式。
您也可以使用 RenderSettings 修改子元素的容器元素(如果适用)。
答案 3 :(得分:0)
答案 4 :(得分:0)
您还可以创建一个自定义内容区域,该区域在实时模式下编辑时不会渲染div,只能在编辑模式下渲染它们。
如果您只需要执行一次或两次我仍然建议使用ChildrenCustomTagName路线,因为它有点灵活。如果你需要做很多事情并且你不能轻易地改变你的CSS那么我会去自定义内容区域。如果你对如何删除div感兴趣,我在github上写了一篇博文和一个示例网站Extra divs in content area how to remove them ?
答案 5 :(得分:0)
由于我无法移除我不想要的<div>
,我将自己的CSS类放在它们上面。这对我来说是Webforms的诀窍。 (如果还有人使用它)
使用<RenderSettings ChildrenCssClass="yourCssClass" />
<EPiServer:Property runat="server" PropertyName="RightContentArea"CustomTagName="aside" CssClass="column-2 sidebar"><RenderSettings ChildrenCssClass="yourCssClass"></RenderSettings></EPiServer:Property>