| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
一、ASP.NET中的事件主要支持3个主要的事件组: 中国网管联盟bitsCN.com
1、包含在asp.net生成页面时自动生成,我们使用这些事件建立页面(如page_load等) 网管网www.bitscn.com
2、包含了用户与页面交互时发生的所有事件(这种最强大) 中国网管联盟bitsCN.com
3、html内部的事件,这些事件在浏览器上执行(主要是由javascript来实现)。 网管论坛bbs_bitsCN_com
在C#语言中,事件的处理主要有两种方法:
网管网www.bitscn.com
1、委托式事件处理模式(Delegation Event Model) (VS2003中需要手工建立事件的委托关系,VS2005不需要了。) 中国网管联盟bitsCN.com
2、对可重载方法(Event Method)的重载 (在控件代码中重载方法) 中国网管联盟bitsCN.com
二、ASP.NET服务端添加客户端事件:
服务器控件并不是所有的操作都是在服务器端执行的,有的事件是通过客户端脚本来执行的,这样可以大大增强服务器控件的可用性。如ASP.NET验证控件,可以把部分工作放在客户端进行验证。 中国网管联盟bitsCN.com
ASP.NET服务器控件可以发送两种客户端脚本:
1、客户端脚本块:客户端脚本块通常是用JavaScript编写的,其中通常包含在发生特定的客户端事件时执行的函数。
网管网www.bitscn.com
发送脚本块的方法是使用System.Web.UI.Page类包含的两个方法可以将客户端代码发送到由ASP.NET Web页面提供的HTML中:
网管联盟bitsCN_com
(1)、RegisterStartupScript(key,script):在Web窗体的结尾处(在</form> 标记之前)发送脚本块。
中国网管联盟bitsCN.com
(2)、RegisterClientScriptBlock(key,script):在Web窗体的开始处(紧接着<form runat="server">标识之后)发送脚本块。 网管联盟bitsCN_com
如:
| protected override void OnPreRender(EventArgs e) { if (!Page.ClientScript.IsClientScriptBlockRegistered("Common")) { Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Common", ClientJavaScriptCodeScipt("Common.js")); 网管网www.bitscn.com } if (!Page.ClientScript.IsClientScriptBlockRegistered(ScriptKey)) { Page.ClientScript.RegisterClientScriptBlock(typeof(Page), ScriptKey, ClientJavaScriptCodeScipt("DateTime.js")); } } |
网管联盟bitsCN@com
这种方法只适用于从System.Web.UI.WebControls.WebControl类导出的服务器控件,因为从这个类导出的控件会发送某些HTML元素。 网管u家u.bitsCN.com
WebControl类包含一个将HTML元素属性添加到由Web控件发出的HTML元素的方法,该方法称为AddAttributesToRender(),它只有一个输入参数,即HtmlTextWriter的实例。 网管下载dl.bitscn.com
当然在现在开发控件中,也没必要通过这种方式来为HTML元素添加事件,特别在采用AJAX模式的情况下,完全可以在客户端通过$addHandler来为HTML元素绑定事件。
| /// <summary> /// 将此控件呈现给指定的输出参数。 /// </summary> /// <param name="output"> 要写出到的HTML 编写器</param> protected override void AddAttributesToRender(HtmlTextWriter output) { output.AddAttribute("onmousedown","setday(this);"); output.AddAttribute("onkeypress", "EnsureNumeric(event)"); base.AddAttributesToRender(output); 网管网www.bitscn.com } |
| using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace ServerToClientScript 网管u家u.bitsCN.com { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string script = "return confirm('真的要删除吗?');"; this.Button1.Attributes.Add("onclick",script); if ((!Page.IsStartupScriptRegistered("PopUp")&&(!Page.IsPostBack))) { 中国网管论坛bbs.bitsCN.com string scriptBlock = "<script language='JavaScript'>alert('发送客户端脚本!');</script>"; Page.RegisterStartupScript("PopUp",scriptBlock); } } } } |
三、通过客户端事件引发服务端事件: 中国网管联盟bitsCN.com
其实服务端控件的服务端事件是通过客户端的JavaScript模拟出来的,如我在页面上添加了一个服务器控件DropDownList,并设置其AutoPostBack为True,然后设置它的 SelectedIndexChanged事件
| protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { } |
网管u家u.bitsCN.com
|
0
|
评论加载中…