InfoPath フォームにボタンがあり、クリックするとカスタム URL にリダイレクトしたいと考えています。を試しましResponse.Redirect
たがServer.Transfer
、SPUtilities.Redirect
どれも機能しません。
私が試したとき
HttpContext.Response.Redirect("http://google.com", false);
フォームに次のエラー メッセージが表示されます: Critical error...
InfoPath フォームにボタンがあり、クリックするとカスタム URL にリダイレクトしたいと考えています。を試しましResponse.Redirect
たがServer.Transfer
、SPUtilities.Redirect
どれも機能しません。
私が試したとき
HttpContext.Response.Redirect("http://google.com", false);
フォームに次のエラー メッセージが表示されます: Critical error...
InfoPath Forms Servicesを公開したときにリダイレクトすることはできませんが、ブラウザー対応のInfoPathフォームを独自のXmlFormView Webパーツでホストしてから、リダイレクトするようにホストに通知することはできます。
これが私の解決策
です。XmlFormクラスのNotifyHostメソッドを使用して、フォームテンプレートのホスティング環境に通知を送信できます。
ButtonコントロールのClickedイベントハンドラーに次のコードを追加します。
NotifyHost("Redirect")
NotifyHostメソッドは、 XmlFormViewコントロールのNotifyHostイベントを発生させます。
VisualWebPartプロジェクトを作成し、XmlFormViewコントロールをVisualWebPartに追加します。追加する必要があります
OnNotifyHost="XmlFormView1_NotifyHost"
と
XsnLocation="http://ServerName/FormServerTemplates/MyFormTemplate.xsn"
<cc1:XmlFormView ID="XmlFormView1" runat="server" XsnLocation="http://ServerName/FormServerTemplates/MyFormTemplate.xsn" OnNotifyHost="XmlFormView1_NotifyHost" />
イベントをフックした後、次のようにVisualWebPartのコードビハインドに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);
}
}