代码之家  ›  专栏  ›  技术社区  ›  Tig7r

如何创建一个DNN模块,该模块可以多次放置在同一页面上,设置中的内容不同?

  •  0
  • Tig7r  · 技术社区  · 6 年前

    我正在创建一个模块,该模块允许我在将存储在门户设置中的dnn模块的设置部分保存HTML内容。

    如何确保我的设置仅对放置它的当前容器是唯一的?如何获取模块所在的当前分区的ID?

    然后我可以将模块放在完全相同的位置。例如,网站的页眉和页脚部分。

    所以,如果我能得到parentdivid,然后在settings键的末尾附加它。

    例如:if(dictsettings.containskey(“globalhtml”)。+ 父母党的 )

    这是我当前的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"];
        }
    
    }
    
    3 回复  |  直到 5 年前
        1
  •  2
  •   VDWWD    5 年前

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

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

    但是对于HTML,我将创建一个自定义表,用主键和 TabModuleId 列。

        2
  •  1
  •   Tig7r    5 年前

    我已经找到了一种方法,可以将同一个模块添加到特定门户的页面中,并将已保存在设置中的内容与使用我可以设置的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;
       }                  
      }
    

    模块设置:

    enter image description here

    结果:

    enter image description here

        3
  •  0
  •   Joe Craig    5 年前

    我将看看HTML模块是如何做到这一点的…

    推荐文章