将内容中的DNN HTML Pro模块复制到另一个模块

时间:2016-10-03 15:35:49

标签: dotnetnuke dotnetnuke-7

下面的代码适用于HTML模块,但不适用于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));

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

如果您只想简单地复制&#34;从一个到另一个的内容,您可以调查&#34;导入&#34;的使用情况。和&#34;出口&#34;作为这些模块一部分的函数。

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

您可以简单地查看每个模块的.dnn清单,找到BusinessControllerClass,它将有两个方法&#34; ImportModule&#34;和&#34; ExportModule&#34;你可以使用。