С оказала помощь libardo at the N2 forum
Вот «минимальный» способ добавления зон и части к минимальному Примеру N2 для MVC:
1) Добавить это пространство имен в web.config страницах. Пространства имен узла:
<pages>
<namespaces>
...
<add namespace="N2.Web.Mvc.Html"/>
...
2) Добавить модель Container страницы, используя AvailableZones атрибут:
using N2.Integrity;
...
[Definition("ContainerPage")]
[AvailableZone("Right", "MyRightZone")]
public class ContainerPage : N2.ContentItem
{
...
3) Добавить контроллер контейнера в обычном N2 образом, ничего особенного здесь не требуется, чтобы сделать его контейнер:
[Controls(typeof(ContainerPage))]
public class ContainerController : ContentController<ContainerPage>
{
...
4) В представлении для контейнера, используйте функцию Html.DroppableZone:
<div class="n2zone">
<% Html.DroppableZone("MyRightZone").Render(); %>
</div>
5) Добавить модель детали, например это просто показывает Title как строку. Обратите внимание, что PartDefinition является то, что делает его часть, которая может быть отброшена в зону:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using N2;
using N2.Details;
namespace MyProject.Models
{
[PartDefinition("SimplePart")]
[WithEditableTitle("Title", 10)]
public class SimplePart : ContentItem
{
[DisplayableLiteral()]
public override string Title
{
get { return base.Title; }
set { base.Title = value; }
}
}
}
6) Добавить контроллер для части. Это обычный N2 контроллер за исключением того, что мы переопределять индекс для возврата PartialView:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using N2.Web;
using N2.Web.Mvc;
using MyProject.Models;
namespace MyProject.Controllers
{
[Controls(typeof(SimplePart))]
public class SimplePartController : ContentController<SimplePart>
{
public override ActionResult Index()
{
return PartialView(CurrentItem);
}
}
}
7) Наконец, добавьте частичный вид контроллера части. Ничего особенного не требуется здесь:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyProject.Models.SimplePart>" %>
<div class="simplePart">
<%= Html.DisplayContent(m => m.Title) %>
</div>
В редакторе N2, то вы можете оставить столько SimpleParts, как вам нравится в ContainerPage страниц.