如何:使用查询参数来调用支持浏览器的 InfoPath 表单

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

可以通过四种方法在运行 InfoPath Forms Services 的服务器上调用 InfoPath 表单或基于浏览器版本的表单。这些方法包括:引用表单模板文件 (.xsn) 的 URL、引用基于表单模板的表单文件 (.xml) 的 URL、引用内置 FormServer.aspx 网页的 URL、以及引用包含 XmlFormView 控件的自定义页的 URL。前三种 URL 支持使用查询参数来控制生成的表单的各个方面,包括:是在 InfoPath Filler 中打开表单,还是在浏览器中呈现表单;保存表单的位置;以及当用户关闭表单时将被定向到的网页。

重要注释重要说明

默认情况下,将在 InfoPath Filler 中打开 InfoPath 表单,即使已启用浏览器功能的表单可用也是如此。如果未安装 InfoPath Filler,则将在浏览器中打开表单。除使用查询参数来控制表单的打开方式外,还可使用 SharePoint 表单库设置来控制打开表单的位置。若要始终强制在浏览器中打开表单,请打开表单库,单击"库工具"下的"库"选项卡,单击功能区上的"库设置",然后单击"常规设置"下的"高级设置"链接。在浏览器中的"打开文档"下,单击"在浏览器中打开"。

可使用九个不同的参数来打开 InfoPath 表单。有些参数重写其他参数,或不能一起使用,如下表所示。未在下表中列出的名称/值对被解释为输入参数,并传递到表单。输入参数包含一个或多个以与号 (&) 字符分隔的名称/值对,通过命令行或使用 /InputParameters 命令行选项的批处理文件在 InfoPath Filler 中打开表单模板时,或通过 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 页进行呈现。必须启动表单模板,才能支持移动设备,否则会返回一条错误消息。

  • 浏览器

  • 客户端

  • PreferClient

  • 移动

Source

表单关闭时用户重定向到的位置。URL 必须在同一网站集中,否则将返回一个错误。

与表单在同一网站集的有效 URL。

Options

DisableSave 是唯一的允许值。此值将隐藏"保存"和"另存为"按钮,并禁止在浏览器呈现表单时保存该表单。

DisableSave

SaveLocation

将显示"另存为"对话框,提示用户输入文件名,然后将其保存在指定的文件夹中。如果指定的文件夹不存在,则将返回一个错误。

网站集上的任何有效的文件夹位置。

NoRedirect

不会重定向到 FormServer.aspx,以便进行客户端检查或在浏览器中呈现。默认值为 false。如果为 true,且已指定 XmlLocation 或 XsnLocation,则在使用 Internet Explorer 时将出现"文件下载"对话框。

  • true

  • false(默认值)

DefaultItemOpen

应改用 OpenIn 参数,并重写 DefaultItemOpen 参数值。值为 0 表示该请求来自文档库,且未检测到 InfoPath Filler。值为 1 表示该请求来自具有"显示为网页"设置的文档或表单库。

  • 0

  • 1

备注

查询参数及其关联的值不区分大小写,但是 XmlFormView 控件的相应属性(如 Options 的属性和 SaveLocation 属性)区分大小写。

过程

以下过程需要有可以发布表单模板的网站集以及在网站集中新建网站的功能。

以下示例 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 中的 NewFolder,在现有的首要网站集下新建一个网站。

  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 InfoPath 2010,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。相反,将会出现"文件下载"对话框(如果使用 Internet Explorer)以从 SharePoint 网站下载文件。

有时必须返回代表表单的 XML 的内容流。使用以下方法可以达到此目的。

使用内容流

  • 使用带 NoRedirect 参数的 URL。

  • 在 HTTP GET 请求中插入一个"Translate:f"标头,如以下示例:

    myRequest.Headers.Add("Translate:f");
    myRequest.Headers["Translate"] = "F";
    
  • 在 HTTP GET 请求中使用适当的 InfoPath 用户代理 InfoPath.1 或 InfoPath.2。