Asp.net mvc Dotnetnuke自定义模块设置

Asp.net mvc Dotnetnuke自定义模块设置,asp.net-mvc,settings,dotnetnuke-module,Asp.net Mvc,Settings,Dotnetnuke Module,我已经创建了一个dotnetnuke模块,它有多个控件封装在一个模块中现在我想跨模块访问设置变量,比如说我有一个dateformat设置,现在用户选择的dateformat应该在整个模块中使用它与dotnetnuke默认附带的视图控件配合得很好(ChrisToc Template)但当我添加新控件时,它不起作用,我还添加了正确的继承,它从不抛出编译错误(如果它没有获得正确的命名空间) 下面是我正在使用的代码: public partial class ViewEntry : WireModule

我已经创建了一个dotnetnuke模块,它有多个控件封装在一个模块中

现在我想跨模块访问设置变量,比如说我有一个dateformat设置,现在用户选择的dateformat应该在整个模块中使用

它与dotnetnuke默认附带的视图控件配合得很好(ChrisToc Template)

但当我添加新控件时,它不起作用,我还添加了正确的继承,它从不抛出编译错误(如果它没有获得正确的命名空间) 下面是我正在使用的代码:

public partial class ViewEntry : WireModuleBase
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("SETTINGS: " + Settings["WireDateFormat"]);
        }
    }

任何帮助都将不胜感激

我从来没有在我的模块视图中使用过设置字典。首先,在访问设置时必须硬编码键字符串,这会使您容易出现代码错误。其次,这会使您很难与业务逻辑或其他视图共享。我首选的设置模式是创建接口和类对于我的设置,它为我的设置提供类属性,并执行对DNN core的管道调用以获取和设置这些设置

您将在其中找到类SettingsRepository和ISettingsRepository接口

将设置的公共属性(即WireDateFormat)修改到类和接口中后,就可以在模块设置实现中使用它

获取设置:

ISettingsRepository settingsCtrl = new SettingsRepository(this.ModuleId, this.TabModuleId);
txtSetting1.Text = settingsCtrl.Setting1;
写下设置

ISettingsRepository settingsCtrl = new SettingsRepository(this.ModuleId, this.TabModuleId);
settingsCtrl.Setting1 = txtSetting1.Text;

存储设置后(在本例中使用TabModuleId,但如果希望在页面上跨模块共享设置,可以使用ModuleID构造函数重载),可以在任何模块视图或业务逻辑中使用相同的“get”代码。

我假设所有控件都在同一命名空间中?