Share via


[方法] クエリ パラメータを使用してブラウザ対応 InfoPath フォームを呼び出す

InfoPath Forms Services を実行しているサーバー上の InfoPath フォームまたはブラウザベース バージョンのフォームを呼び出すには、4 つの方法があります。これらの方法は、フォーム テンプレート ファイル (.xsn) を参照する URL、フォーム テンプレートに基づくフォーム ファイル (.xml) を参照する URL、組み込みの FormServer.aspx Web ページを参照する URL、および XmlFormView コントロールを含むカスタム ページへの参照を含む URL から構成されます。最初の 3 種類の URL では、クエリ パラメータを使用して結果のフォームのさまざまな面を制御できます。たとえば、フォームを InfoPath クライアントで開くかブラウザでレンダリングするか、フォームをどこに保存するか、ユーザーがフォームを閉じたときにどの Web ページにリダイレクトするかなどを制御できます。

重要

既定では、InfoPath フォームはブラウザ対応フォームが利用可能な場合に InfoPath イベントで開きます。InfoPath がインストールされていない場合、フォームはブラウザで開きます。フォームを開く方法を制御するには、クエリ パラメータを使用する以外に、SharePoint ライブラリの設定を使用できます。フォームを常にブラウザで開かせるには、ライブラリの [詳細設定] ページで [Web ページとして表示する] を選択します。

InfoPath フォームを開くには、9 個の異なるパラメータを使用できます。下の表に示すように、一部のパラメータは他のパラメータよりも優先され、同時に使用することはできません。下の表に示すもの以外の名前と値のペアは入力パラメータとして解釈され、フォームに渡されます。入力パラメータは 1 つ以上の名前と値のペアから構成され、アンパサンド (&) 文字で区切られ、フォーム テンプレートが /InputParameters コマンドライン オプションを使用してコマンド ラインまたはバッチ ファイルから開かれるときや、フォーム テンプレートが URL から開かれるときに指定されます。入力パラメータの使用の詳細については、LoadingEventArgs クラスの InputParameters プロパティを参照してください。

パラメータ名 説明 指定できる値

XmlLocation

既存のフォームを開くのに使用します。XmlLocation および XsnLocation プロパティは相互に排他的です。両方のパラメータに値を指定すると、エラーが発生します。

同じサイト コレクション内のフォーム ファイル (.xml) への有効な URL。

XsnLocation

フォーム テンプレートに基づく新規作成フォームを開くのに使用します。FormServer.aspx を使用して URL に XsnLocation を指定する場合、[保存] および [名前を付けて保存] ボタンを表示する必要があれば、SaveLocation も指定する必要があります。Source パラメータも指定する必要があります。そうしなければ、ユーザーがフォームを閉じたときに、メッセージ "フォームは閉じられています" が表示されます。XmlLocation および XsnLocation プロパティは相互に排他的です。両方のパラメータに値を指定すると、エラーが発生します。

同じサイト コレクションに発行されたフォーム テンプレート ファイル (.xsn) への有効な URL。

OpenIn

  • Source クエリ パラメータを指定する場合、既定値は Browser です。

  • XmlLocation を指定する場合、既定値はライブラリで使用されている設定です。

  • XsnLocation のみを指定する場合、既定値は PreferClient です。

  • Mobile を指定する場合、フォームは MobileFormServer.aspx ページにリダイレクトされてレンダリングされます。フォーム テンプレートでモバイル サポートを有効にする必要があります。そうしなければ、エラー メッセージが返されます。

  • Browser

  • Client

  • PreferClient

  • Mobile

Source

フォームが閉じられたときにユーザーをリダイレクトする場所。同じサイト コレクション内の URL を指定する必要があります。そうしなければエラーが返されます。

フォームと同じサイト コレクション内の有効な URL。

Options

指定できる値は DisableSave だけです。[保存] および [名前を付けて保存] ボタンを非表示にし、フォームがブラウザでレンダリングされるときにフォームの保存を無効にします。

DisableSave

SaveLocation

ユーザーにファイル名の入力を求める [名前を付けて保存] ダイアログ ボックスが表示され、指定したフォルダに保存されます。指定されたフォルダが存在しない場合は、エラーが返されます。

サイト コレクション上の任意の有効なフォルダの場所。

NoRedirect

クライアントを検出したり、ブラウザでレンダリングするために、FormServer.aspx にリダイレクトしません。既定値は false です。true を指定し、XmlLocation または XsnLocation を指定すると、Internet Explorer を使用するときに [ファイルのダウンロード] ダイアログ ボックスが表示されます。

  • true

  • false (既定)

DefaultItemOpen

代わりに OpenIn パラメータを使用して、DefaultItemOpen パラメータ値を上書きする必要があります。値 0 は、要求がドキュメント ライブラリからのものであり、InfoPath クライアントが検出されなかったことを示します。値 1 は、要求が [Web ページとして表示する] が設定されているドキュメントまたはフォーム ライブラリからのものであることを示します。

  • 0

  • 1

注意

クエリ パラメータおよびその関連付けられた値では大文字と小文字が区別されませんが、XmlFormView コントロールの対応するプロパティ (OptionsSaveLocation プロパティなど) では大文字と小文字が区別されます。

手順

次の手順では、フォーム テンプレートの発行先のサイト コレクションが必要です。また、サイト コレクション内で新しいサイトを作成できる必要があります。

下の URL の例ではプレースホルダ値を使用します。これらの値は次の SharePoint および InfoPath のアイテムを表します。

  • ServerName: InfoPath Forms Services を実行しているサーバー。

  • SiteCollection: サイト コレクション内のトップレベルのサイト。

  • FormLibrary: ブラウザ対応のフォーム テンプレートが含まれているフォーム ライブラリまたはドキュメント ライブラリ。

  • Form1.xml: FormLibrary 内の template.xsn に基づくフォーム。

  • NewFolder: FormLibrary 内のフォルダ。

  • NewSite: SiteCollection 内のサイト。

次の URL で使用される ~sitecollection の値は、プレースホルダ値ではありません。InfoPath Forms Services で使用される特別なトークンで、相対リンクとサイト コレクションを対象範囲とする URL アドレスを有効化します。

XmlLocation パラメータを含む URL を使用する

  1. フォーム テンプレートを作成し、新規作成フォーム ライブラリにアップロードします。

  2. そのフォーム テンプレートに基づいてフォームを作成し、ライブラリ内に "Form1" として保存します。

  3. 次の URL を入力します。プレースホルダ値には実際の値を挿入してください。

    https://ServerName/sites/SiteCollection/_layouts/FormServer.aspx?XmlLocation=~sitecollection/FormLibrary/Form1.xml

    注意

    "Form1" がブラウザでレンダリングされます。

XsnLocation、SaveLocation、および Source パラメータを含む URL を使用する

  1. フォーム テンプレートを作成し、新規作成フォーム ライブラリにアップロードします。

  2. 次の URL を入力します。プレースホルダ値には実際の値を挿入してください。

    https://ServerName/sites/SiteCollection/_layouts/FormServer.aspx?XsnLocation=~sitecollection/FormLibrary/Forms/template.xsn&SaveLocation=~sitecollection/FormLibrary&Source=~sitecollection/FormLibrary

    注意

    フォーム テンプレートに基づく新規作成フォームがブラウザでレンダリングされます。

  3. 新規作成フォームを保存します。

    注意

    フォームは SaveLocation パラメータで指定されたフォーム ライブラリ内に保存されます。

  4. フォームを閉じると、Source パラメータで指定されたフォーム ライブラリに戻ります。この場合、SaveLocation と Source パラメータが同じ場所をポイントしているので、フォーム ライブラリはフォームの保存場所と同じ場所です。

SaveLocation および Source パラメータを含む URL を使用する

  1. フォーム テンプレートを作成し、新規作成フォーム ライブラリにアップロードします。

  2. そのフォーム テンプレートに基づいてフォームを作成し、ライブラリ内に "Form1" として保存します。

  3. 下の URL で NewFolder の代わりに新しいフォルダ名を使用して、フォーム ライブラリ内に新しいフォルダを作成します。

  4. 下の URL の NewSite の代わりに新しいサイト名を使用して、既存のトップレベル サイト コレクションの下位に新しいサイトを作成します。

  5. 次の URL を入力します。プレースホルダ値には実際の値を挿入してください。

    https://ServerName/sites/SiteCollection/_layouts/FormServer.aspx?XmlLocation=~sitecollection/FormLibrary/Form1.xml&SaveLocation=~sitecollection/FormLibrary/NewFolder/&Source=~sitecollection/NewSite

  6. [名前を付けて保存] ダイアログ ボックスで新しい名前を付けて、既存のフォームを保存します。フォームが新しいフォルダに保存されます。

  7. フォームを閉じると、新しいサイトにリダイレクトされます。

OpenIn=Browser パラメータを含む URL を使用する

  1. フォーム テンプレートを作成し、新規作成フォーム ライブラリにアップロードします。

  2. そのフォーム テンプレートに基づいてフォームを作成し、ライブラリ内に "Form1" として保存します。

  3. 次の URL を入力します。プレースホルダ値には実際の値を挿入してください。

    https://ServerName/sites/SiteCollection/FormLibrary/Form1.xml?OpenIn=Browser

    または

    https://ServerName/sites/SiteCollection/_layouts/FormServer.aspx?XmlLocation=~sitecollection/FormLibrary/Form1.xml&OpenIn=Browser

    注意

    Microsoft Office InfoPath 2007 をインストールしてある場合も、URL によってフォームがブラウザにレンダリングされます。

NoRedirect パラメータを含む URL を使用する

  1. フォーム テンプレートを作成し、新規作成フォーム ライブラリにアップロードします。

  2. そのフォーム テンプレートに基づいてフォームを作成し、ライブラリ内に "Form1" として保存します。

  3. 次の URL を入力します。プレースホルダ値には実際の値を挿入してください。

    https://ServerName/sites/SiteCollection/FormLibrary/Form1.xml?NoRedirect=true

    および

    https://ServerName/sites/SiteCollection/FormLibrary/Forms/template.xsn?NoRedirect=true

    注意

    フォーム ファイル (.xml) およびフォーム テンプレート (.xsn) は FormServer.aspx にリダイレクトされません。その代わりに、SharePoint サイトからファイルをダウンロードするために、[ファイルのダウンロード] ダイアログ ボックスが表示されます (Internet Explorer をお使いの場合)。

フォームを表す XML のコンテンツ ストリームを返す必要がある場合があります。それには次の方法を使用します。

コンテンツ ストリームを返す

  • NoRedirect パラメータを含む URL を使用します。

  • 次のように、HTTP GET 要求に "Translate:f" ヘッダーを挿入します。

    myRequest.Headers.Add("Translate:f");
    myRequest.Headers["Translate"] = "F";
    
  • HTTP GET 要求で適切な InfoPath ユーザー エージェントを使用します (InfoPath.1 または InfoPath.2)。

関連項目

その他のリソース

モバイル デバイスで使用されるフォーム テンプレートをデザインする