在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中没有正文的同一页面。
我错过了给定代码中的内容吗?
答案 0 :(得分:0)
答案可能取决于您是否拥有mvc表格。
如果是mvc表单,您可能需要阅读:http://ggullentops.blogspot.be/2016/07/sitecore-wffm-act-on-success.html。它描述了挂钩到成功管道<wffm.success>
并将数据传递到成功页面(究竟是什么 - 查询字符串,会话,...取决于你(r代码))。一旦你知道正确的管道,就相当容易。
还有一篇很棒的帖子here描述了你要做的事情 - 即保存数据以供以后在saveaction中使用。这里要复制的代码太多了,但它归结为在保存操作期间保存数据(在会话中)并创建将放置在成功页面上的渲染(以再次读取和处理数据)。 / p>
创建一个放置在成功页面上的渲染是你必须要做的事情。不要试图重定向自己,Sitecore会为你做这件事。