如何:张贴 SharePoint Foundation RPC 方法
上次修改时间: 2010年3月23日
适用范围: SharePoint Foundation 2010
可以将 URL 协议与协作应用程序标记语言 (CAML) 和 SharePoint Foundation 远程过程调用协议 (RPC) 结合在一起使用以将请求张贴到运行 Microsoft SharePoint Foundation 2010 的前端 Web 服务器。通过 .aspx 页中的表单的张贴正文,可以使用 CAML Method 元素张贴单个请求,也可以使用包含多个 Method 元素的 Batch 元素张贴多个请求。下面的编程任务演示如何创建用于张贴请求的表单。
创建用于张贴请求的表单
创建 .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 值。
添加下面的脚本块以便在提交表单时自动将 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>
如以下所示在 .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。
在浏览器中打开表单并将如下所示代码块插入张贴正文,这将使用 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 元素都必须已指定一个表单摘要;否则,张贴将无法通过安全验证。