3

MVC のN2 CMS Minimal Example を見ています (ここから)

私はそのほとんどを把握しましたが、N2 は「ゾーン」にドロップできる「パーツ」をサポートしていることがわかります。

最小限の例でゾーンとパーツを機能させるにはどうすればよいですか?

このHtml.Zone()コマンドはそのままでは機能しないようです。

4

1 に答える 1

12

N2フォーラムでlibardoの助けを借りて

MVCのN2最小例にゾーンとパーツを追加する「最小」の方法は次のとおりです。

1)この名前空間をweb.configpages.namespacesノードに追加します。

<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)パーツのコントローラーを追加します。これは通常のN2コントローラーですが、Indexをオーバーライドして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エディターでは、ContainerPageページに必要な数のSimplePartをドロップできます。

于 2010-10-04T11:27:13.930 に答える