У меня есть следующее в моем проекте (MVC3) N2CMS 2.2.1 (из nuget).Я могу редактировать главную страницу с помощью функции «Управление частями», перетаскивать часть изображения на страницу и настраивать ее содержимое.Однако, когда он отображает страницу, он отображает мой файл Image.cshtml внутри _layout.cshtml (как это было бы для страницы, а не для части) ... это приводит к тому, что сайт имеет несколько тегов head / footer и т. Д.расположение.Как я могу получить DroppableZones для правильного рендеринга частичек (без необходимости устанавливать Layout = "" в каждом частичном представлении вручную).Если вы хотите проверить это самостоятельно, вы можете проверить код из https://github.com/robbihun/N2CMSBaseStarterSite, запустить его, пройти настройку N2CMS с помощью sqlite db и использовать функцию управления деталями (http://screencast.com/t/w9q5a49Ei8), чтобы перетащить часть изображения надомашняя страница.
_layout.cshtml
<body>
@{ Html.ControlPanel().Render(); }
@RenderBody()
<footer>© @DateTime.Now.Year</footer>
@RenderSection("scripts", false)
</body>
StartHome.cshtml
<div>
@{ Html.DroppableZone(Zones.ImageSlider).Render(); }
</div>
Image.cshtml
@model ImagePart
<div class="image">
<img src="@Model.Image" alt="@Model.Title" />
<span class="title">@Model.Title</span>
<span class="description">@Model.ShortDescription</span>
</div>
StartHomePage.cs
[PageDefinition("Start Page", Description = "The start or home page of the website.", SortOrder = 1, InstallerVisibility = InstallerHint.PreferredRootPage | InstallerHint.PreferredStartPage)]
[WithEditableTitle("Title", 1, Focus = true, ContainerName = Tabs.Content)]
[RestrictParents(typeof(IRootPage))]
public class StartHomePage : PageBase
{
[EditableFreeTextArea("Main Content", 2, ContainerName = Tabs.Content)]
public virtual string MainContent { get; set; }
}
ImagePart.cs
[PartDefinition("Image Part", Description = "Image with title and description.")]
[WithEditableTitle("Title", 10)]
public class ImagePart : PartBase
{
[FileAttachment, EditableImageUpload("Image", 5)]
public virtual string Image { get; set; }
[EditableTextBox("Short Description", 15, TextMode = TextBoxMode.MultiLine, Rows = 5, Columns = 15)]
public virtual string ShortDescription { get; set; }
}