我的项目(MVC3)N2CMS 2.2.1(来自nuget)中有以下内容。我可以使用“管理部件”功能编辑主页面,并将图像部分拖到页面上并设置其内容。但是,当它呈现页面时,它会在_layout.cshtml中呈现我的Image.cshtml文件(就像它对于页面而不是部分一样)...这会导致网站有多个页眉/页脚等标签并打破布局。如何让DroppableZones正确渲染部分(无需在每个局部视图中手动设置Layout =“”)。如果您想自己测试一下,可以查看https://github.com/robbihun/N2CMSBaseStarterSite运行它的代码,使用sqlite db进行N2CMS设置并使用manage parts功能(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; }
}
答案 0 :(得分:0)
在Views / Shared / Parts文件夹中添加_ViewStart.cshtml,它将覆盖该文件夹中的Layout设置。在新的_ViewStart中,设置Layout = null;
并且不要在局部视图中设置布局。
以下是给您的拉取请求:https://github.com/robbihun/N2CMSBaseStarterSite/pull/1