首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC的N2 -如何让Zones工作?

MVC的N2 -如何让Zones工作?
EN

Stack Overflow用户
提问于 2010-10-04 01:52:12
回答 1查看 2.1K关注 0票数 3

我正在看(来自here的) MVC的N2 CMS最小示例。

我已经弄明白了大部分,但我看到N2支持你可以放入“区域”的“部分”。

如何让Zones和Parts在最小的示例中工作?

Html.Zone()命令似乎不能开箱即用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-04 19:27:14

libardo at the N2 forum的帮助下

下面是向MVC的N2最小示例添加区域和部件的“最小”方法:

1)在web.config pages.namespaces节点中添加此命名空间:

代码语言:javascript
复制
<pages>
  <namespaces>
    ...
    <add namespace="N2.Web.Mvc.Html"/>
    ...

2)使用AvailableZones属性添加容器页面模型:

代码语言:javascript
复制
using N2.Integrity;
...

[Definition("ContainerPage")]
[AvailableZone("Right", "MyRightZone")]
public class ContainerPage : N2.ContentItem
{
   ...

3)以通常的N2方式添加容器控制器,这里不需要任何特殊的东西来使其成为容器:

代码语言:javascript
复制
[Controls(typeof(ContainerPage))]
public class ContainerController : ContentController<ContainerPage>
{
    ...

4)在容器视图中,使用Html.DroppableZone函数:

代码语言:javascript
复制
<div class="n2zone">
  <% Html.DroppableZone("MyRightZone").Render(); %>
</div>

5)添加一个part模型,例如这个只将Title显示为字符串。请注意,正是PartDefinition使其成为可放入区域的部件:

代码语言:javascript
复制
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)为Part添加一个Controller。这是通常的N2控制器,除了我们重写索引以返回一个PartialView:

代码语言:javascript
复制
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)最后,为部件控制器添加一个局部视图。这里不需要什么特别的东西:

代码语言:javascript
复制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyProject.Models.SimplePart>" %>
<div class="simplePart">
  <%= Html.DisplayContent(m => m.Title) %>
</div>

然后,在N2编辑器中,您可以将任意数量的SimpleParts放入ContainerPage页面。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3850878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档