将启用浏览器功能的 InfoPath 表单重定向到自定义 URL



在我的 InfoPath 表单中,我有一个按钮,我想在单击时重定向到自定义 URL。 我试过Response.RedirectServer.TransferSPUtilities.Redirect但都不起作用。

当我尝试时

HttpContext.Response.Redirect("http://google.com", false);

我的表单显示错误消息:严重错误...

发布 InfoPath Forms Services 时无法重定向,但可以在您自己的 XmlFormView Web 部件上承载启用浏览器功能的 InfoPath 表单,然后通知主机进行重定向。

这是我的解决方案:

您可以使用 XmlForm 类的 NotifyHost 方法将通知发送到表单模板的宿主环境。
将以下代码添加到 Button 控件的 Clicked 事件处理程序:

NotifyHost("Redirect")

方法引发XmlFormView控件的通知主机事件。
创建 VisualWebPart 项目并将XmlFormView控件添加到 VisualWebPart,您必须添加

OnNotifyHost="XmlFormView1_NotifyHost"



XsnLocation="http://ServerName/FormServerTemplates/MyFormTemplate.xsn"到 XmlFormView1 的控件标记。以下代码演示如何执行此操作:
<cc1:XmlFormView ID="XmlFormView1" runat="server" XsnLocation="http://ServerName/FormServerTemplates/MyFormTemplate.xsn" OnNotifyHost="XmlFormView1_NotifyHost" />

挂接事件后,必须在可视化 WebPart 的代码隐藏中实现 XmlFormView1_NotifyHost 事件处理程序,如下所示:

protected void XmlFormView1_NotifyHost(object sender, NotifyHostEventArgs e)
{
...
}

将NotifyHost 事件挂接到事件处理程序后,可以在事件处理程序中编写代码来注册和执行 JScript 代码。

protected void XmlFormView1_NotifyHost(object sender, NotifyHostEventArgs e)
{
if (e.Notification == "Redirect")
{
string jsCode = "window.location='http://www.google.com';";
Page.ClientScript.RegisterStartupScript(typeof(string), "RedirectScript", jsCode, true);
}
}

最新更新