我期待在對MVC的N2 CMS小例子(從here)N2 for MVC - 如何讓區域工作?
我已經想通了大部分,但我看到N2支持的「零件」,你可以拖放到「區域」。
如何獲得區域和零件在最小示例中的工作?
Html.Zone()
命令似乎不能立即使用。
我期待在對MVC的N2 CMS小例子(從here)N2 for MVC - 如何讓區域工作?
我已經想通了大部分,但我看到N2支持的「零件」,你可以拖放到「區域」。
如何獲得區域和零件在最小示例中的工作?
Html.Zone()
命令似乎不能立即使用。
一點幫助這裏的添加區域和零件的N2小例子,對於MVC的「最小」的方式:
1)添加這個命名空間在web.config頁面。命名空間節點:
<pages>
<namespaces>
...
<add namespace="N2.Web.Mvc.Html"/>
...
2)添加一個容器頁面模型,使用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)添加零件模型,例如這個只是將標題顯示爲一個字符串。請注意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)爲零件添加控制器。這是除了我們覆蓋指數返回PartialView通常N2控制器:
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頁面。