将数据发布到自定义保存操作Web表单中的下一页用于营销人员Sitecore 8

时间:2016-10-06 15:19:34

标签: save sitecore web-forms-for-marketers

在WFFM自定义保存操作中保存数据后,我想重定向具有大量数据的成功页面 我正在尝试下面的代码行。

我可以使用Cookie,会话或查询字符串和Response.Redirect(baseUrl)但我想要Cookie,会话或查询字符串。

 class SaveAction : WffmSaveAction
    {
        public override void Execute(ID formId, AdaptedResultList adaptedFields, ActionCallContext actionCallContext, params object[] data)
        {
             //Save Data in Service ,, Redirect to success page with below code with some data like ID

                string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority +
HttpContext.Current.Request.ApplicationPath.TrimEnd('/') + "/success-page";

                HttpContext.Current.Response.Clear();        //
                StringBuilder sb = new StringBuilder();
                sb.Append("<html>");
                sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
                sb.AppendFormat("<form name='form' action='{0}' method='post'>", baseUrl);
                sb.AppendFormat("<input type='hidden' name='id' value='{0}'>", "123456");
                // Other params go here
                sb.Append("</form>");
                sb.Append("</body>");
                sb.Append("</html>");

                HttpContext.Current.Response.Write(sb.ToString());
                HttpContext.Current.Response.End();
                // HttpContext.Current.Response.Redirect(baseUrl);

            }
}

上面的代码重新加载Html中没有正文的同一页面。

我错过了给定代码中的内容吗?

1 个答案:

答案 0 :(得分:0)

答案可能取决于您是否拥有mvc表格。 如果是mvc表单,您可能需要阅读:http://ggullentops.blogspot.be/2016/07/sitecore-wffm-act-on-success.html。它描述了挂钩到成功管道<wffm.success>并将数据传递到成功页面(究竟是什么 - 查询字符串,会话,...取决于你(r代码))。一旦你知道正确的管道,就相当容易。

还有一篇很棒的帖子here描述了你要做的事情 - 即保存数据以供以后在saveaction中使用。这里要复制的代码太多了,但它归结为在保存操作期间保存数据(在会话中)并创建将放置在成功页面上的渲染(以再次读取和处理数据)。 / p>

创建一个放置在成功页面上的渲染是你必须要做的事情。不要试图重定向自己,Sitecore会为你做这件事。