ASP.NET服务器控件封装-【事件】-1.1【事件回发.异步回调】

最近,正在学习ASP.NET服务器控件封装相关的知识,把自己学到的和大家分享下。本次内容的概要如下:1.事件以及为什么需要事件驱动机制;2.回发的原理;3.异步回调的原理;4.事件回发的实现;5.异步回调的实现。了解了本次内容的概要,接下来就分节次说明了。1.事件以及为什么需要事件驱动机制在C#语言详解一书中对事件的定义是“事件是一种使对象或类能够提供通知的成员”,在这里换句话说就是页面中已注册事件的对象能够对用户的操作进行捕获并处理。那么为什么需要引用事件机制呢?大家都知道,如果在类A的实例对象中创建了一个类B的实例对象,那么在类A的实例对象中就可以通过该类B的实例对象调用类B公开的任何方法和属性等。就像用户Page对象中包含了创建了一个TextBox对象,Page对象就可以通过TextBox对象去调用Text属性。但是如果需要在上述的TextBox对象中调用Page对象中的某些属性或方法又该怎样处理呢?显然包含调用就行不通了,事件机制正好解决该问题。现就TextBox的TextChanged事件来描述下。首先需要在TextBox中声明TextChanged委托,并通过页面注册将该委托和页面类处理事件函数关联起来<asp:TextBoxID="TextBox1"runat="server"OnTextChanged="TextBox1_TextChanged"></asp:TextBox>(上述代码就是将TextBox1的TextChanged事件注册到页面类中)。然后在TextBox类体内调用TextChanged委托关联的事件函数就可以了。这样,当页面类对象中TextBox控件的Text发生改变时TextBox首先执行完自己内部逻辑处理后,就会调用页面类中OnTextChanged事件函数TextBox1_TextChanged(),而TextBox1_TextChanged()函数是页面类中的一个方法,所以TextBox就可以在该函数内调用页面类中的其他方法和属性了。(当然也是可以调用TextBox1自己的)。2.回发的原理Web开发的人员都知道,客户端回发到服务端的事件只有一个,那么在服务端怎样的区分用户执行了怎样的操作呢?这里首先从ASP.NET的页面请求说起了。在ASP.NET中处理页面时,前后两个页面之间是无状态连接的,也就是说客户端的前后两次请求是相互独立的,服务端不会保存前一次请求的页面状态。如此就引入了视图状态机制(我会在以后的文章中和大家分享下ASP.NET开发的视图状态和控件状态机制的研究乐趣)来处理前后两次请求的逻辑处理,其原理就是在前一次请求发生后服务端将页面的逻辑信息保存在一个隐藏的字段中回送到客户端,当后一次请求发生时服务端首先取出该隐藏字段中的值并恢复到各个视图控件中,等逻辑处理完后再将新的数据保存到该隐藏字段会送到客户端,从而延续了两次页面之间的状态信息。本文中要说明的回发就是在视图状态机制基础上完成的,也就是通过比较发送到服务端的控件当前值和保存在隐藏字段中的旧值,从而决定是否触发哪些事件。当然,自定义的控件类必须通过继承IPostBackDataHander接口来完成事件的回发功能。3.异步回调的原理和回发不同,回调就是从客户端到服务端,在服务端处理相关逻辑完了将处理的数据返回给客户端,就相当于客户端调用了服务端的方法(这和WebService很像)一样,将处理的数据作为返回的结果供客户端程序处理。异步回调过程中,ASP.NET会修改页面正常的生命周期来处理请求,而回发则是ASP.NET会用一个完整的页面生命周期处理请求。另外,异步回调过程中,用户还可以进行其他的操作,客户端页面并不会重新刷新。4.事件回发的实现上面说过,客户端到服务端的事件只有一个——回发事件。那么,服务端怎样使自己的控件捕获该回发事件呢?你需要将你的控件类继承IPostBackEvnetHander接口并实现该接口中唯一的一个方法:RaisePostBackEvent(stringeventArgument)。下面就以一个简单的实例说明下:(1).首先创建一个服务器控件项目和测试项目。(这里介绍了项目的创建方法,以后就不再说明了哦!)打开VS2008新建项目,在弹出的对话框中选中ASP.NET服务器控件模板,输入你项目名并选择路径,如下图1。图1然后在资源管理器中的“解决方案...”上右键“添加”=>“新建项目”(如图2所示),弹出如图1对话框,选中“ASP.NETWeb应用程序”后输入项目名(这里仅只为了测试控件的一些处理,所...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?