我正在创建一个模块,该模块将允许我将HTML内容保存在DNN模块的设置部分中,该部分将存储在门户网站设置中。
如何确保我的设置仅对放置它的当前容器是唯一的?如何获取模块所在的当前div的ID?
然后,我可以将模块放置在完全相同的位置。例如,网站的“页眉和页脚”部分。
因此,如果我可以获取ParentDivID,然后将其附加在设置键的末尾。
例如:if(dictSettings.ContainsKey(“ GlobalHTML” + ParentDivID ))
这是我当前的DNN模块设置背后的代码
if (Page.IsPostBack == false)
{
//Updated to use Portal Settings instead of per page per tab settings
var dictSettings = m_PortalController.GetPortalSettings(PortalId);
if (dictSettings.ContainsKey("GlobalHTML"))
{
txtGlobalHTML.Text = dictSettings["GlobalHTML"];
}
}
答案 0 :(得分:2)
通常,您将存储模块设置存储在ModuleController
的ModuleSettings表中。
var modules = new ModuleController();
modules.UpdateTabModuleSetting(TabModuleId, "SettingKey", "SettingValue");
但是对于HTML,我将创建一个自定义表,该表存储具有主键和TabModuleId
列的HTML。
答案 1 :(得分:1)
我想出了一种方法,可以将同一模块添加到特定门户网站的页面上,并使已经保存在设置中的内容与我可以设置的ID链接。
因此,如果我想在多个页面或页脚内容上使用相同的电话号码,则可以将设置部分的HTML字段留空,而只需将ID设置为与最初为HTML内容配置的ID相同。
这是加载模块设置时的代码:
if (Page.IsPostBack == false)
{
per tab settings
var dictSettings = m_PortalController.GetPortalSettings(PortalId);
if (Settings.Contains("GlobalIDHTML"))
{
txtIDGlobalHTML.Text = Settings["GlobalIDHTML"].ToString();
LinkID = Settings["GlobalIDHTML"].ToString();
}
if (dictSettings.ContainsKey("GlobalHTML"+ LinkID))
{
txtGlobalHTML.Text = dictSettings["GlobalHTML"+ LinkID];
}
}
这是更新设置的代码:
public override void UpdateSettings()
{
try
{
var modules = new ModuleController();
modules.UpdateModuleSetting(ModuleId, "GlobalIDHTML", txtIDGlobalHTML.Text);
modules.UpdateTabModuleSetting(TabModuleId, "GlobalIDHTML", txtIDGlobalHTML.Text);
var globalstoragevalue = "GlobalHTML"+ txtIDGlobalHTML.Text;
if (txtGlobalHTML.Text != null && !string.IsNullOrWhiteSpace(txtGlobalHTML.Text))
{
PortalController.UpdatePortalSetting(PortalId, globalstoragevalue, txtGlobalHTML.Text);
}
}
catch (Exception exc) //Module failed to load
{
Exceptions.ProcessModuleLoadException(this, exc);
}
}
页面加载时的代码:
try
{
if (Settings["GlobalIDHTML"] != null && !string.IsNullOrWhiteSpace(Settings["GlobalIDHTML"].ToString()))
{
GlobalLinkID = Settings["GlobalIDHTML"].ToString();
}
GlobalContent = TryGetPortalSetting("GlobalHTML"+ GlobalLinkID);
if (GlobalContent != null)
{
GlobalPageContent = GlobalContent;
}
}
模块设置:
结果:
答案 2 :(得分:0)
我将看看HTML模块是如何做到的...