如何:自定义 Delegate 控件

上次修改时间: 2010年7月9日

适用范围: SharePoint Foundation 2010

本示例演示创建和实现委托控件的基本过程。委托控件位于页面上的 AdditionalPageHead 控件中。它在页面上注册一些 ECMAScript(JavaScript、JScript)。

生成委托控件

  1. 启动 Microsoft Visual Studio 2010 中的 SharePoint 开发工具。

  2. 在"文件"菜单上,指向"新建",然后单击"项目"。

  3. 在"项目类型"中的"Visual Basic"或"C#"下,选择"空白 SharePoint 项目"。

  4. 键入 EcmaScriptDelegate 作为项目名称。单击"确定"。

  5. 在"SharePoint 自定义向导"中,选择"部署为场解决方案"。单击"完成"。

  6. 在"解决方案资源管理器"中,右键单击"EcmaScriptDelegate"项目。依次选择"添加"和"新项"。

  7. 在"添加新项目"对话框中,单击"代码"组并选择"类"模板。键入 EcmaScriptDelegateControl 作为"名称",然后单击"添加"。

  8. 接下来,必须添加对 System.Web 的引用。在"解决方案资源管理器"中,右键单击"引用"文件夹并选择"添加引用"。在"添加引用"对话框中,单击".NET"选项卡并在列表中找到"System.Web"。单击"确定"。

  9. 在显示的 EcmaScriptDelegateControl 文件中,添加以下 using 语句。

    using System.Web.UI.WebControls;
    
    Imports System.Web.UI.WebControls
    
  10. 通过修改以下行将 EcmaScriptDelegateControl 的基类更改为 WebControl

    class EcmaScriptDelegateControl : WebControl
    
    Public Class EcmaScriptDelegateControl
      Inherits WebControl
    
  11. 通过添加以下代码重写 OnLoad 方法。

    protected override void OnLoad(EventArgs e)
    {
      base.OnLoad(e);
    }
    
    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
      MyBase.OnLoad(e)
    End Sub
    
  12. 在 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)
    

现在,您已经为项目生成了委托控件。接下来,将创建功能以部署控件。

创建功能以部署控件

  1. 在"解决方案资源管理器"中,右键单击"EcmaScriptDelegate"项目,并依次选择"添加"和"新项"。

  2. 在"添加新项目"对话框中,选择"空元素"模板并键入 EcmaScriptDelegateFeature 作为"名称"。单击"添加"。

  3. 在 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 项

  1. 在"解决方案资源管理器"中,单击"EcmaScriptDelegateFeature",并在"安全控制项"属性中单击"..."。

  2. 在"安全控制项"对话框中单击"添加"。

  3. 在"属性"框中,确保"命名空间"属性具有正确的值。它应该是您的控件的命名空间。另外,确保"安全"属性设置为 true。单击"确定"。

现在,已经添加了 SafeControl 项,您可以部署解决方案。

部署和测试委托控件

  1. 按 F5 以运行解决方案。

  2. 加载页面时,将出现一个显示"Hello, world!"的对话框。这是委托控件已添加到页面中的脚本。

请参阅

引用

DelegateControl

概念

委派控件(控件模板化)

委派控件