N2CMS MVC3 Html.DroppableZone отображает полный макет - PullRequest
1 голос
/ 17 января 2012

У меня есть следующее в моем проекте (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>&copy; @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; }
}

1 Ответ

0 голосов
/ 17 января 2012

Добавьте _ViewStart.cshtml в папку Views / Shared / Parts, и он переопределит настройку Layout в этой папке. В новом _ViewStart установите Layout = null; и не устанавливайте компоновку в ваших частичных видах.

Вот запрос на выборку для вас: https://github.com/robbihun/N2CMSBaseStarterSite/pull/1

...