DotNetNuke扩展/门户设置页面

时间:2015-08-31 16:22:15

标签: dotnetnuke-7

我正在使用Christoc模板在Visual Studio 2012中构建自定义DNN 7模块。我已经能够弄清楚如何设置模块范围设置,以及选项卡范围设置。但是,我想要做的是在扩展/包级别或至少在门户级别设置一些默认设置。这样,如果用户正在添加模块实例,则会有我可以读入的默认值以供使用。两个问题:

1)我当然可以编写一个名为ExtensionSettings.ascx的控件(ASCX),它可能会起作用(至少对于Portal作用域),但是如何在DNN清单文件中指定这将被添加到正确的设置中页面(推测在Host | Extensions | MyModule | Edit下?)

2)如何在安装时预先填充这些设置?我是否需要添加一个SQL语句来手动添加它们,还是有办法通过清单添加设置?

1 个答案:

答案 0 :(得分:0)

  1. 根据我的经验,门户网站上没有控制注册 模块设置的级别。只有Module和TabModule作用域 设置,就像你说的那样。
  2. 我最喜欢的设置方式,允许默认'是 这样的:
  3. 创建设置界面:

    public interface ISettingsRepository
    {
        string ReplyToAddress { get; set; }
        string InviteEmailSubject { get; set; }
    }
    

    然后是一个实现类(注意默认值是getter中返回的默认值)。请参阅将属性值写为模块设置的完整实现。

    public class SettingsRepository : ISettingsRepository
    {
        /*
         * See the full code at 
         * https://dnnsocialinvite.codeplex.com/SourceControl/latest#Components/SettingsRepository.cs
        */
        ...
    
        public string ReplyToAddress
        {
            get { return ReadSetting<string>("ReplyToAddress", "noreply@email.com"); }
            set { WriteSetting("ReplyToAddress", value.ToString()); }
        }
    
        public string InviteEmailSubject
        {
            get { return ReadSetting<string>("InviteEmailSubject", "You are invited to join"); }
            set { WriteSetting("InviteEmailSubject", value.ToString()); }
        }
    }
    

    然后您可以在模块的设置控件中使用它。请注意,我可以将设置作为属性来引用以设置和获取它们。如果我收到的设置尚未设置,则会返回默认值:

    public override void LoadSettings()
    {
        SettingsRepository _settingsCtrl = SettingsRepository(this.ModuleId, this.TabModuleId);
        txtEmailSubject.Text = _settingsCtrl.InviteEmailSubject;
    }
    
    public override void UpdateSettings()
    {
        SettingsRepository _settingsCtrl = SettingsRepository(this.ModuleId, this.TabModuleId);
        _settingsCtrl.InviteEmailSubject = txtEmailSubject.Text;
    }
    

    现在,此实现具有扩展名的硬编码默认值。您可以从资源(.resx)文件中读取默认设置字符串,并可以使用资源文件名中的门户网站ID维护每个门户网站的资源文件。该值可以替换设置属性的getter中的硬编码默认值。