如何:在 ASP.NET 网页中创建事件处理程序 (Visual Studio)
更新:2007 年 11 月
在 Visual Studio 中编辑 ASP.NET 网页时,您可以通过多种方法创建控件和页的服务器事件处理程序。其中某些方法取决于您正在使用的编程语言。您可以使用 Visual Web Developer 中的工具,也可以采用声明或代码方式创建处理程序。
说明: |
---|
还可以为客户端脚本添加事件,这些事件在控件运行于浏览器中时作为页面中的元素执行。有关详细信息,请参见 如何:向 ASP.NET Web 服务器控件添加客户端脚本事件。 |
如果控件支持多个事件,通常将其中的一个事件配置为默认事件。例如,对于 Button 控件,默认事件是 Click 事件。
在 Visual Web Developer 中创建事件处理程序
为默认事件创建事件处理程序
在“设计”视图中,双击要为其创建默认事件处理程序的页面或控件。
Visual Web Developer 创建默认事件的处理程序,并打开代码编辑器,此时插入点位于事件处理程序中。
在“属性”窗口中创建事件处理程序
在“设计”视图中,选择要创建其事件处理程序的控件。
说明: 在“设计”视图中无法选择页面,因此无法使用此过程创建页面事件。请改用前面的过程。
在**“属性”**中,单击事件符号 。
**“属性”**窗口显示所选控件的事件列表。
在事件名称旁边的框中,执行下列操作之一:
双击以便为该事件新建事件处理程序。设计器将使用“控件 ID_事件”约定为该处理程序命名。
键入要创建的处理程序的名称。
在下拉列表中,选择现有处理程序的名称。
下拉列表显示一个方法列表,这些方法都具有该事件的正确签名。
完成后,Visual Web Developer 切换到代码编辑器,并将插入点置于处理程序中。
在代码编辑器中创建事件处理程序
使用以下方法之一切换到代码编辑器:
对于只有一个文件的网页,请切换到“源”视图。
对于代码隐藏的页,请在解决方案资源管理器中右击该页的名称,然后单击**“查看代码”**。
说明: 对于使用 C# 的代码隐藏页,此方法不起作用,因为最后一步出现的下拉列表中没有该控件的名称。请改用其他过程。
在代码编辑器窗口的顶部,从左侧的下拉列表中选择控件,然后从右侧的下拉列表中选择事件。
说明: 其对应方法已存在的事件将以粗体显示。
以声明方式创建事件处理程序
如果您使用 Visual Web Developer 创建处理程序,则 Visual Web Developer 创建主干处理程序,并配置控件来调用该处理程序。您可以不使用 Visual Web Developer,自己亲自执行这一操作。
为页面事件创建处理程序
在代码编辑器中,创建一个名称为“Page_事件”的方法。
例如,若要为页的 Load 事件创建处理程序,请创建一个名为 Page_Load 的方法。
说明: 并不要求页面事件处理程序像其他控件事件处理程序那样接受参数。
ASP.NET 页自动将页面事件绑定到名为 Page_事件的方法。此自动绑定操作是由 @ Page 指令中的 AutoEventWireup 属性配置的,该属性默认情况下设置为 true。如果将 AutoEventWireup 设置为 false,则该页不会自动搜索使用“Page_事件”命名约定的方法。
下面的代码示例显示页面的 Load 事件的处理程序。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Page.IsPostBack Then Response.Write("<br>Page has been posted back.") End If End Sub
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { Response.Write("<br>Page has been posted back."); } }
以声明方式为控件添加处理程序
在代码编辑器中,创建具有适当签名的事件处理方法。
您可将该方法命名为您喜欢的任何名称。
在控件的标记中,使用名为“On<事件名称>”的属性与事件处理程序挂钩。将事件处理程序方法名作为值。
下面的代码示例显示 TextBox 控件的标记,该控件的 TextChanged 事件已绑定到名为 NameChange 的事件处理程序方法:
安全说明: 该示例包含一个用于接受用户输入的文本框,这是一个潜在的安全威胁。默认情况下,ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述。
Protected Sub NameChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles textbox1.TextChanged 'Sub for the OnTextChanged event End Sub
<asp:TextBox ID="textbox1" Runat="server" Text="" OnTextChanged="NameChange" />
向代码添加事件方法。例如,下面的代码示例显示名为 NameChange 的事件处理程序方法的代码:
protected void NameChange(object sender, EventArgs e) { //Method for the OnTextChanged event. }
在 Visual Basic 中隐式添加事件处理程序
在代码编辑器中,创建具有适当签名的事件处理方法。
您可将该方法命名为您喜欢的任何名称。
使用关键字 Handles,并指定该方法应绑定到的控件和事件。
下面的代码示例显示 SampleButton 按钮的 Click 事件的事件处理程序。在该示例中,方法的名称为 Clicked。
Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles SampleButton.Click ' Code goes here. End Sub
说明: 如果使用 Handles 关键字,请不要在控件标记中包含事件属性;否则处理程序将被调用两次。
如果该方法需要处理多个事件,请在 Handles 子句中添加其他事件的名称,名称之间以逗号分隔。
下面的代码示例显示的方法用于处理多个按钮的 Click 事件。在该处理程序中,代码对发送方参数进行测试,以确定单击了哪个按钮。
Protected Sub AnyClicked(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click Dim b As Button = CType(sender, Button) Response.Write("You clicked the button labeled " & b.ID) End Sub
请参见
任务
如何:在 ASP.NET 网页中对事件处理程序进行运行时动态绑定