删除在EPiServer 7 </div>中的共享块周围生成的<div>

时间:2013-01-16 15:02:37

标签: block episerver episerver-7

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;

6 个答案:

答案 0 :(得分:3)

我相信它是ContentArea属性的渲染,它在它包含的块周围添加div标签。

EPiServer建议in order to preserve the editing functionality of the block elements themselves they need to have the div around them

一个可能的解决方案可能是您自己做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)

您可以使用Property Control

上的CustomTagName属性选择标记

或者,如果要删除标记,可以使用控制适配器。找到了一个很好的例子here

答案 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>