2015-06-10 37 views
0

我有一個ContentArea與一些浮動塊。 EPiServer自動換在DIV - 元素,這是必要的編輯模式到正常工作的每個塊。那麼最初一個 div變成三個嵌套divs:內容區,子元素包裝器和塊視圖。CSS類生成的div元素EPiServer塊

是否有可能從塊視圖添加CSS類到子元素包裝?

div.ContentArea > div > div.my-class 

變爲:

div.ContentArea > div.my-class 
+1

MVC或Web表單? –

+0

MVC!謝謝。 – Leonard

回答

1

我結束了使用自定義的內容區域渲染:

public class CustomContentAreaRenderer : ContentAreaRenderer 
{ 
    protected override string GetContentAreaItemCssClass(HtmlHelper htmlHelper, ContentAreaItem contentAreaItem) 
    { 
     var tag = GetContentAreaItemTemplateTag(htmlHelper, contentAreaItem); 
     return string.Format("block {0} {1} {2}", GetTypeSpecificCssClasses(contentAreaItem, ContentRepository), "my own classes", tag); 
    } 
} 

我應用自定義渲染器容器與此代碼:

container.For<ContentAreaRenderer>().Use<CustomContentAreaRenderer>(); 

謝謝您的幫助!

2

如果你想避免額外的包裝的div,看看到this post

我的猜測是,這是你應該呈現什麼,所以今天是什麼:

@Html.PropertyFor(x => x.Teasers, 
new 
    { 
     ChildrenCustomTagName ="div", 
     ChildrenCssClass = "my-class" 
    }) 

不要渲染包裝div元件在局部視圖中,只有「內的內容」(因爲包裹DIV元件將在內容區域中,而不管呈現爲每個項目)。

無法排除呈現內容區域時呈現的wrapping元素,因爲這會破壞EPiServer中的頁面上編輯功能。

希望這有助於和足夠清晰。

0

它可以通過修改默認的內容區域完全去除多餘的div的。我在這裏寫了一個相當詳細的教程EpiServer 7 : Extra divs in content area how to remove them ?

儘管採用這種方法是相當極端的。如果你只需要在一個或兩個地方這個問題,那麼我會建議使用這樣的

@Html.PropertyFor(x => Model.MainContentArea, new 
{ 
    CustomTag = "ul", 
    CssClass = "list", 
    ChildrenCustomTagName = "li", 
    ChildrenCssClass = "list_item", 
    Tag = string.Empty 
}) 
東西

您可以瞭解更多關於如何將這些特性在這裏工作:How To Render EpiServer Blocks In Your Views Using PropertyFor