N2Cms,向ContentPageBase类添加新属性会破坏已输入的数据

时间:2011-01-01 16:51:59

标签: asp.net-mvc-2 n2cms

我想在功能网站中修改ContentPageBase, 我试图添加一个名为例如(重量)的属性, 但是如果数据库中存在现有页面,则该站点将出现故障,并抛出异常(对象引用未设置为对象的实例)。

如何更正已输入的数据?

public abstract class ContentPageBase : PageBase, ICommentable
{
   [EditableTextBox("Weight", 10, ContainerName = Tabs.Details)]
        //newly added property.
        public virtual int Weight
        {
            get { return (int)GetDetail("Weight"); }
            set { SetDetail("Weight", value); }
        }
}

2 个答案:

答案 0 :(得分:1)

是的,您在访问该属性时获得空引用,并且DB中没有数据。

旧N2CMS中的getter必须是

 get { return (int)(GetDetail("Weight") ?? 0); }

如果你当然想要0作为默认值。

最好的关注

答案 1 :(得分:0)

我想出了如何解决这个问题, 只需删除属性的Getters和Setter,然后像这样使用它:

public virtual int Weight { get; set;}

这是N2Cms 2.0中的新功能。

当您为新添加的属性赋予新值时,N2cms会为该页面添加N2Detail表的新记录。