1

InfoPath フォームにボタンがあり、クリックするとカスタム URL にリダイレクトしたいと考えています。を試しましResponse.RedirectたがServer.TransferSPUtilities.Redirectどれも機能しません。

私が試したとき

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

フォームに次のエラー メッセージが表示されます: Critical error...

4

1 に答える 1

0

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"

XmlFormView1の制御タグに。次のコードは、これを行う方法を示しています。

<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);
    }
}
于 2012-12-13T22:40:05.750 に答える