【问题标题】:N2 NullReferenceException on "Html.DroppableZone("h1").Render()"N2 NullReferenceException on "Html.DroppableZone("h1").Render()"
【发布时间】:2011-03-29 10:35:59
【问题描述】:

我目前正在评估 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; }
    }
}

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

【问题讨论】:

  • 它可以帮助从他们的github 中获取 N2 源代码并针对其构建运行,这样您就可以深入了解它到底哪里出了问题。抱歉,我自己从未使用过这些区域
  • 谢谢。我最终做到了。
  • 继续:如果区域内没有任何部件,我认为代码似乎存在区域问题。但我猜这不可能。

标签: c# asp.net asp.net-mvc n2 n2cms


【解决方案1】:

只检查 null 吗?

var zone = Html.DroppableZone("H1");
if(zone != null)
    zone.Render();

【讨论】:

  • 这给出了完全相同的问题。然后在“zone.Render()”行上抛出 NullReferenceException。你碰巧有其他想法吗?
  • 这意味着 NRE 被抛出 inside Render 方法。我在这里无法进一步帮助您,因为我不知道 asp.net MVC 或 N2。
猜你喜欢
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
相关资源
最近更新 更多