0

我正在创建一个模块,它允许我将 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"];
    }

}
4

3 回答 3

2

您通常将商店模块设置存储在ModuleController.

var modules = new ModuleController();
modules.UpdateTabModuleSetting(TabModuleId, "SettingKey", "SettingValue");

但是对于 HTML,我会创建一个自定义表,用于存储带有主键和 TabModuleId列的 HTML。

于 2019-02-12T16:49:04.097 回答
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;
   }                  
  }

模块设置:

在此处输入图像描述

结果:

在此处输入图像描述

于 2019-02-13T08:48:07.963 回答
0

我会看看 HTML 模块是如何做到这一点的......

于 2019-02-13T23:29:41.790 回答