我有一個ContentArea與一些浮動塊。 EPiServer自動換在DIV - 元素,這是必要的編輯模式到正常工作的每個塊。那麼最初一個 div變成三個嵌套divs:內容區,子元素包裝器和塊視圖。CSS類生成的div元素EPiServer塊
是否有可能從塊視圖添加CSS類到子元素包裝?
div.ContentArea > div > div.my-class
變爲:
div.ContentArea > div.my-class
我有一個ContentArea與一些浮動塊。 EPiServer自動換在DIV - 元素,這是必要的編輯模式到正常工作的每個塊。那麼最初一個 div變成三個嵌套divs:內容區,子元素包裝器和塊視圖。CSS類生成的div元素EPiServer塊
是否有可能從塊視圖添加CSS類到子元素包裝?
div.ContentArea > div > div.my-class
變爲:
div.ContentArea > div.my-class
我結束了使用自定義的內容區域渲染:
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>();
謝謝您的幫助!
如果你想避免額外的包裝的div,看看到this post
我的猜測是,這是你應該呈現什麼,所以今天是什麼:
@Html.PropertyFor(x => x.Teasers,
new
{
ChildrenCustomTagName ="div",
ChildrenCssClass = "my-class"
})
不要渲染包裝div元件在局部視圖中,只有「內的內容」(因爲包裹DIV元件將在內容區域中,而不管呈現爲每個項目)。
無法排除呈現內容區域時呈現的wrapping元素,因爲這會破壞EPiServer中的頁面上編輯功能。
希望這有助於和足夠清晰。
在這裏你可以閱讀所有有關執行contentarea的內容,以及他們爲什麼像他們那樣工作。 http://blog.tech-fellow.net/2015/06/11/content-area-under-the-hood-part-3/
它可以通過修改默認的內容區域完全去除多餘的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
MVC或Web表單? –
MVC!謝謝。 – Leonard