【问题标题】:N2: Set default values for ContentItemsN2:为 ContentItems 设置默认值
【发布时间】:2010-11-01 10:14:40
【问题描述】:

使用N2 CMS时:

如果我想在创建新的 ContentItem 时设置一些默认值(例如,为新页面设置 CreatedByUser 值以便我可以记录最初创建它的人)在哪里放置该代码的最佳位置?

我认为 ContentItem 的构造函数并不理想,因为它会在加载现有对象时被调用。

【问题讨论】:

    标签: asp.net content-management-system default n2


    【解决方案1】:

    如果您使用的是 Get/SetDetail 语法,那么您可以在属性 getter 中执行类似的操作:

    public virtual string TopImage
    {
        get { return (string)(GetDetail("TopImage") ?? string.Empty); }
        set { SetDetail("TopImage", value); }
    }
    

    这有点难看,所以还有一个用于获取/设置详细信息的重载,可让您指定默认值:

    public virtual string TopImage
    {
        get { return GetDetail("TopImage", String.Empty /* Default */); }
        set { SetDetail("TopImage", value, String.Empty /* Default */); }
    }
    

    如果您想在保存某些内容时保存值,请尝试覆盖 ContentItem 上的 AddTo 方法。每次保存对象时都会调用它,因此如果您只想在第一次保存某些内容时调用它(当 Item 为“新”时,ID == 0),请小心

    【讨论】:

    • 谢谢,我猜要让 SetDetail 技术工作,该属性必须有一个 Editable... 属性,以便编辑引擎调用设置器。对于您不一定希望向内容编辑器显示(或允许他们编辑)的用户 ID,这使得它有点难看。用 ID 检查覆盖 AddTo 方法听起来不错,我会研究一下。
    • 您不需要 Editable 属性来保存值 - Editable 只是添加了一些“魔法”以允许管理 UI 显示正确的编辑控件
    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多