【问题标题】:Dotnetnuke Custom Module SettingsDotnetnuke 自定义模块设置
【发布时间】:2014-08-13 17:45:46
【问题描述】:

我创建了一个 dotnetnuke 模块,它在单个模块中包含多个控件

现在我想跨模块访问设置变量,例如我有一个 dateformat 设置,现在用户选择的 dateformat 应该在整个模块中使用它与 Dotnetnuke(ChrisToc 模板)默认附带的视图控件一起工作正常但是当我添加新控件时它不起作用,我还添加了正确的继承,它永远不会引发编译错误(以防它不正确命名空间) 以下是我正在使用的代码:
public partial class ViewEntry : WireModuleBase
    {

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

任何帮助将不胜感激

【问题讨论】:

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

标签: asp.net-mvc settings dotnetnuke-module


【解决方案1】:

我从不在我的模块视图中使用设置字典。首先,它让您在访问设置时必须对密钥字符串进行硬编码,从而导致代码错误。其次,它很难与您共享业务逻辑或其他视图。我首选的设置模式是为我的设置创建一个接口和类,为我的设置提供类属性并执行对 DNN 核心的管道调用以获取和设置这些设置。

Follow this link to a Codeplex project 在那里你会找到一个类 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 构造函数重载),您可以在任何一个中使用相同的“获取”代码您的模块视图或业务逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多