如何:自定义 Delegate 控件
上次修改时间: 2010年7月9日
适用范围: SharePoint Foundation 2010
本示例演示创建和实现委托控件的基本过程。委托控件位于页面上的 AdditionalPageHead 控件中。它在页面上注册一些 ECMAScript(JavaScript、JScript)。
生成委托控件
启动 Microsoft Visual Studio 2010 中的 SharePoint 开发工具。
在"文件"菜单上,指向"新建",然后单击"项目"。
在"项目类型"中的"Visual Basic"或"C#"下,选择"空白 SharePoint 项目"。
键入 EcmaScriptDelegate 作为项目名称。单击"确定"。
在"SharePoint 自定义向导"中,选择"部署为场解决方案"。单击"完成"。
在"解决方案资源管理器"中,右键单击"EcmaScriptDelegate"项目。依次选择"添加"和"新项"。
在"添加新项目"对话框中,单击"代码"组并选择"类"模板。键入 EcmaScriptDelegateControl 作为"名称",然后单击"添加"。
接下来,必须添加对 System.Web 的引用。在"解决方案资源管理器"中,右键单击"引用"文件夹并选择"添加引用"。在"添加引用"对话框中,单击".NET"选项卡并在列表中找到"System.Web"。单击"确定"。
在显示的 EcmaScriptDelegateControl 文件中,添加以下 using 语句。
using System.Web.UI.WebControls;
Imports System.Web.UI.WebControls
通过修改以下行将 EcmaScriptDelegateControl 的基类更改为 WebControl。
class EcmaScriptDelegateControl : WebControl
Public Class EcmaScriptDelegateControl Inherits WebControl
通过添加以下代码重写 OnLoad 方法。
protected override void OnLoad(EventArgs e) { base.OnLoad(e); }
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) MyBase.OnLoad(e) End Sub
在 OnLoad 方法中,添加以下代码以将 JavaScript 添加到页面。
string helloAlert = "alert('Hello, world!');"; this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "popup", helloAlert, true);
Dim helloAlert As String = "alert('Hello, world!');" Me.Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "popup", helloAlert, True)
现在,您已经为项目生成了委托控件。接下来,将创建功能以部署控件。
创建功能以部署控件
在"解决方案资源管理器"中,右键单击"EcmaScriptDelegate"项目,并依次选择"添加"和"新项"。
在"添加新项目"对话框中,选择"空元素"模板并键入 EcmaScriptDelegateFeature 作为"名称"。单击"添加"。
在 Elements 元素中插入以下 XML。Id 属性标识呈现控件的委托。ControlAssembly 和 ControlClass 属性是您的控件所特有的。有关如何查找完整程序集名称的详细信息,请参阅如何:创建用于获取程序集全名的工具。
<Control Id="AdditionalPageHead" ControlAssembly="EcmaScriptDelegate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=public key token" ControlClass="EcmaScriptDelegate.EcmaScriptDelegateControl">
现在,您已经拥有控件和部署控件所需的功能。控件要求在 web.config 文件中具有 SafeControl 项,才能在页面上运行。以下过程为您的控件添加 SafeControl 项。
添加 SafeControl 项
在"解决方案资源管理器"中,单击"EcmaScriptDelegateFeature",并在"安全控制项"属性中单击"..."。
在"安全控制项"对话框中单击"添加"。
在"属性"框中,确保"命名空间"属性具有正确的值。它应该是您的控件的命名空间。另外,确保"安全"属性设置为 true。单击"确定"。
现在,已经添加了 SafeControl 项,您可以部署解决方案。
部署和测试委托控件
按 F5 以运行解决方案。
加载页面时,将出现一个显示"Hello, world!"的对话框。这是委托控件已添加到页面中的脚本。