1

我目前正在评估用于多个网站的 N2 CMS。

我们只想为我们的客户提供“拖动”功能,这意味着他们可以将部分添加到页面上的区域,填写它们,然后拖动它们。管理区的“后端”功能将保留给开发人员。

因此,我不使用 SlidingCurtain 控件进行渲染。现在,我已经制作了一个自定义管理面板,当具有正确角色的用户登录时会显示该面板。通常,当您单击“拖动”功能时,Sliding Curtain 会在您的 URL 中添加一个“?edit=drag”查询字符串按钮,所以我在登录后自动添加了这个查询字符串。

如果我这样做,我会得到一个 NullReferenceException 到以下行: Html.DroppableZone("H1").Render();

到目前为止,这个 DroppableZone 上还没有任何部件,我想这就是导致这个问题的原因。我该如何解决这个问题?

我有以下 H1Controller:

namespace EmptyCMS.Controllers
{
    [Controls(typeof(Models.H1))]
    public class H1Controller : ContentController<Models.H1>
    {
        public override ActionResult Index()
        {
            return PartialView("H1", CurrentItem);
        }
    }
}

以及以下部分视图:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.H1>" %>

 <h1><%= Model.Text %></h1>

这是我的模型:

namespace EmptyCMS.Models
{
    [PartDefinition("H1")]
    [AllowedZones("H1")]
    public class H1 : ContentItem
    {
        [EditableTextBox("Text", 100)]
        public virtual string Text { get; set; }
    }
}

谁能发现我做错了什么?非常感谢您能给我的任何帮助。

4

1 回答 1

0

只检查null?

var zone = Html.DroppableZone("H1");
if(zone != null)
    zone.Render();
于 2011-03-29T10:41:25.793 回答