2016-10-03 77 views
0

下面的代码对于HTML模块正常工作,但不适用于HTML PRO模块。将内容中的DNN HTML Pro模块复制到另一个模块

HtmlTextController htmlTextController = new HtmlTextController(); 
WorkflowStateController workflowStateController = new WorkflowStateController(); 
int workflowId = htmlTextController.GetWorkflow(ModuleId, TabId, PortalId).Value; 

List<HtmlTextInfo> htmlContents = htmlTextController.GetAllHtmlText(ModuleModId); 
htmlContents = htmlContents.OrderBy(c => c.Version).ToList(); 

foreach (var content in htmlContents) 
{ 
    HtmlTextInfo htmlContent = new HtmlTextInfo(); 
    htmlContent.ItemID = -1; 
    htmlContent.StateID = workflowStateController.GetFirstWorkflowStateID(workflowId); 
    htmlContent.WorkflowID = workflowId; 
    htmlContent.ModuleID = ModuleId; 
    htmlContent.IsPublished = content.IsPublished; 
    htmlContent.Approved = content.Approved; 
    htmlContent.IsActive = content.IsActive; 
    htmlContent.Content = content.Content; 
    htmlContent.Summary = content.Summary; 
    htmlContent.Version = content.Version; 
} 
htmlTextController.UpdateHtmlText(htmlContent, htmlTextController.GetMaximumVersionHistory(PortalId)); 

回答

0

这是由于HTML Pro模块有不同的方法而发生的。这与DNN HTML模块有部分不同。下面是代码。

  HtmlTextController htmlTextController = new HtmlTextController(); 
      WorkflowStateController workflowStateController = new WorkflowStateController(); 
      WorkflowStateInfo wsinfo = new WorkflowStateInfo(); 

      int workflowId = wsinfo.WorkflowID; 

      HtmlTextInfo htmlContents = htmlTextController.GetLatestHTMLContent(ModuleModId); 

       HtmlTextInfo htmlContent = new HtmlTextInfo(); 
       htmlContent.ItemID = -1; 
       htmlContent.StateID = workflowStateController.GetFirstWorkflowStateID(workflowId); 
       htmlContent.WorkflowID = workflowId; 
       htmlContent.ModuleID = ModuleId; 
       htmlContent.IsPublished = htmlContents.IsPublished; 
       htmlContent.Approved = htmlContents.Approved; 
       htmlContent.IsActive = htmlContents.IsActive; 
       htmlContent.Content = htmlContents.Content; 
       htmlContent.Summary = htmlContents.Summary; 
       htmlContent.Version = htmlContents.Version; 

       if (Tags != null && Tags.Count > 0) 
       { 
        foreach (KeyValuePair<string, string> tag in Tags) 
        { 
         if (htmlContent.Content.Contains(tag.Key)) 
         { 
          htmlContent.Content = htmlContent.Content.Replace(tag.Key, tag.Value); 
         } 
        } 
       } 

       htmlTextController.SaveHtmlContent(htmlContent, newModule); 

请在下面添加引用代码的引用方法。

using DotNetNuke.Modules.HtmlPro; 
using DotNetNuke.Professional.HtmlPro; 
using DotNetNuke.Professional.HtmlPro.Components; 
using DotNetNuke.Professional.HtmlPro.Services; 
0

如果您正在寻找简单的“复制”从一个到另一个内容,你可能会探讨“导入”和“导出”功能,这些功能,这些模块的一部分使用。

我建议您使用此路线以帮助您确保随着时间的推移有更好的兼容性。如果他们更新字段或其他数据元素,您不必调查,然后更新您的代码作为其中的一部分。

您可以简单地查看这些模块中的每个模块的.dnn清单,并找到将使用两个可以使用的方法“ImportModule”和“ExportModule”的BusinessControllerClass。