如何:张贴 SharePoint Foundation RPC 方法

上次修改时间: 2010年3月23日

适用范围: SharePoint Foundation 2010

可以将 URL 协议协作应用程序标记语言 (CAML)SharePoint Foundation 远程过程调用协议 (RPC) 结合在一起使用以将请求张贴到运行 Microsoft SharePoint Foundation 2010 的前端 Web 服务器。通过 .aspx 页中的表单的张贴正文,可以使用 CAML Method 元素张贴单个请求,也可以使用包含多个 Method 元素的 Batch 元素张贴多个请求。下面的编程任务演示如何创建用于张贴请求的表单。

创建用于张贴请求的表单

  1. 创建 .aspx 页并添加页指令,如以下所示的页指令,该指令将为服务器控件的 Microsoft.SharePoint.WebControls 命名空间注册。

    <%@ Register Tagprefix="SharePoint" 
      Namespace="Microsoft.SharePoint.WebControls" 
      Assembly="Microsoft.SharePoint, Version=11.0.0.0, 
      Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    

    备注

    可以从位于路径 本地驱动器:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\sts 中的 default.aspx 文件或从由位于 Windows 资源管理器中的 本地驱动器:\%WINDOWS%\assembly 中的 Microsoft.SharePoint 程序集提供的信息中,获取当前 SharePoint Foundation 2010 部署的 PublicKeyToken 值。

  2. 添加下面的脚本块以便在提交表单时自动将 FormDigest 控件插入到每个 Method 元素中。

    <script type="text/javascript" language="JavaScript">
    function InsertSecurityValidation(oForm)
    {
        var sFormDigest = '<SetVar Name="__REQUESTDIGEST">' + 
          oForm.elements["__REQUESTDIGEST"].value + "</SetVar>\n";
        var oPostBody = oForm.elements["PostBody"];
        var rePattern = /<\/Method>/g;
        oPostBody.value = oPostBody.value.replace(rePattern, 
            sFormDigest + "</Method>");
    }
    </script>
    
  3. 如以下所示在 .aspx 页中创建一个表单,其中,action 属性包含张贴到服务器的 URL 命令。

    <form method="post" 
      action="http://Server_Name/sites/Site_Name/_vti_bin/owssvr.dll" 
      onsubmit="InsertSecurityValidation(this);">
      <SharePoint:FormDigest runat="server" />
      <input type="hidden" name="Cmd" value="DisplayPost" />
      <textarea rows="18" name="PostBody" cols="72"></textarea>
      <input type="submit" value="Submit" />
      <input type="reset" value="Reset" />
    </form>
    

    此表单使用 DisplayPost 方法以请求服务器呈现张贴正文内包含的任何 CAML。

  4. 在浏览器中打开表单并将如下所示代码块插入张贴正文,这将使用 Batch 元素来粘贴多个 RPC 方法以便向一个通知列表添加两条通知:

    <ows:Batch Version="6.0.2.5608" OnError="Return">
      <Method ID="A1">
        <SetList>List_GUID</SetList>
        <SetVar Name="ID">New</SetVar>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">
            New Program Manager</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Body">
            Congratulations to Jane for her promotion!</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Expires">
            2001-09-14T00:00:00Z</SetVar>
      </Method>
      <Method ID="A2">
        <SetList>List_GUID</SetList>
        <SetVar Name="ID">New</SetVar>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">
            Sales rise by 10%</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Body">The
            accounting department has released its quarterly report. 
            Check it out!</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Expires">
            2001-12-18T00:00:00Z</SetVar>
      </Method>
    </ows:Batch>
    

编译代码

Batch 元素必须包含一个 Version 属性,此属性指定服务器正在运行的 SharePoint Foundation 的版本。每个 S etList 节点都必须指定列表的 GUID。

在提交表单时,此示例会向一个通知列表添加两条记录。

安全性

如果在服务器上启用安全验证(默认情况下,此安全验证在 SharePoint Foundation 中为 true),则必须在表单内添加 FormDigest 服务器控件。有关此控件和安全验证的信息,请参阅安全验证并进行发布以更新数据。张贴中使用的每个 Method 元素都必须已指定一个表单摘要;否则,张贴将无法通过安全验证。