【发布时间】:2010-11-01 10:14:40
【问题描述】:
使用N2 CMS时:
如果我想在创建新的 ContentItem 时设置一些默认值(例如,为新页面设置 CreatedByUser 值以便我可以记录最初创建它的人)在哪里放置该代码的最佳位置?
我认为 ContentItem 的构造函数并不理想,因为它会在加载现有对象时被调用。
【问题讨论】:
标签: asp.net content-management-system default n2
使用N2 CMS时:
如果我想在创建新的 ContentItem 时设置一些默认值(例如,为新页面设置 CreatedByUser 值以便我可以记录最初创建它的人)在哪里放置该代码的最佳位置?
我认为 ContentItem 的构造函数并不理想,因为它会在加载现有对象时被调用。
【问题讨论】:
标签: asp.net content-management-system default n2
如果您使用的是 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),请小心
【讨论】:
Editable... 属性,以便编辑引擎调用设置器。对于您不一定希望向内容编辑器显示(或允许他们编辑)的用户 ID,这使得它有点难看。用 ID 检查覆盖 AddTo 方法听起来不错,我会研究一下。