我创建了一个dotnetnuke模块,它有多个控件包装在一个模块中
现在我想访问模块中的设置变量,例如我有一个dateformat的设置,现在dateformat用户选择应该在整个模块中使用它可以正常使用视图控件默认使用Dotnetnuke(ChrisToc模板)
但是当我添加新控件时它会不起作用,我还添加了适当的继承,它从不抛出编译错误(如果它没有得到正确的命名空间) 以下是我正在使用的代码:
public partial class ViewEntry : WireModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("SETTINGS: " + Settings["WireDateFormat"]);
}
}
任何帮助将不胜感激
答案 0 :(得分:0)
我从不在模块视图中使用Setting词典。首先,通过在访问设置时必须对密钥字符串进行硬编码,您将面临代码错误。其次,它很难与您分享业务逻辑或其他视图。我首选的设置模式是为我的设置创建一个接口和类,为我的设置提供类属性,并执行对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构造函数重载),您可以在任何一个中使用相同的“获取”代码您的模块视图或业务逻辑。