• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net组件(5):控件的回发IPostBackEventHandler

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

事件处理以前是属于windows应用程序开发的.
现在web开发也具有了. 现在就来看看asp.net它是怎么做到的.

asp.net中的程序:
    往窗体中拉入一个Button控件
    双击一下它,为其添加单击事件响应
    //this.Button1.Click += new EventHandler(Button1_Click)
    //由于用的是vs2005,所以我补上了上面一句,单击了Button1,触发了Clik事件
    //委托给Button1_Click这个函数来处理.EventHandler是.net中提供的默认委托.
    protected void Button1_Click(object sender, EventArgs e)
    {
       Response.Write("<script language='javascript'>alert('您单击了Button1');</script>");
    }
在服务端执行.
这种机制在以前asp中是不可想象的.

接着让我们看看asp中的处理

asp中的程序:
    <script language="javascript">
        function Button1_Click()
        {
            alert("您单击了Button1");
        }
    </script>
    <input type="button" name="Button1" onClick="Button1_Click" />
一切只能在客户端浏览器中进行.好失望噢!!!

asp.net中Button为什么会具有这种回发的功能呢?
在 SDK 中查找 Web Button控件可以看到
System.Object
   System.Web.UI.Control
      System.Web.UI.WebControls.WebControl
         System.Web.UI.WebControls.Button
public class Button : WebControl, IPostBackEventHandler
IPostBackEventHandler从名称可以猜出7,8分了吧.
对它就是让Button控件具有了回发功能.

该接口中含有void RaisePostBackEvent (string eventArgument);
这个函数用来处理回发事件,即回发就会触发它.
eventArgument 表示要传递到事件处理程序的可选事件参数的 String

现在让我们自己来实现一个具有此种功能的控件吧.

using System;
using System.Web.UI;

namespace WebComponent

分析下这个控件:Render 绘制出了一个 html按钮
<input type="submit" name="PostBackComponent1" value="回发" />
点击这个html按钮 submit即提交表单发送到服务器.只要会动态编程的人应该都知道.

接下来有点特别:就是一般人我不告诉他.
发送到服务器,也可称之为回发,即回发到服务器嘛.
只要程序实现了IPostBackEventHandler接口实现了RaisePostBackEvent函数.
系统便会调用RaisePostBackEvent中的内容.

即OnClick(this,EventArgs.Empty);
接着只要Click事件不为空,就触发该事件.
触发后,当然就交给了该事件的委托函数去处理了啦.

噢对了,我们还没有委托呢?那接下来就来委托喽.
新建一个网页,拉入该控件.
protected void Page_Load(object sender, EventArgs e)
{
    //对该控件的Click事件进行委托给PostBackComponent1_Click函数处理
   
PostBackComponent1.Click += new EventHandler(PostBackComponent1_Click);
}

protected void PostBackComponent1_Click(object sender, EventArgs e)
{
   Response.Write("<script language='javascript'>alert('您单击了PostBackComponent1这个按钮');</script>");
}

编译:运行.点击按钮:弹出:您单击了PostBackComponent1这个按钮. 
程序按预期执行.

接下来,要干什么呢?当然是看一看没有回发时,和有回发时有什么区别了呀.
有什么区别呢?先预测一下.
有回发触发RaisePostBackEvent,没回发也就是没有触发该事件,也就是没有触发OnClick也就是没有触发Click
也就是 当你单击了按钮后没有弹出:您单击了PostBackComponet1这个按钮

那就实施一下吧.
注释掉 IPostBackEventHandler
    public class PostBackComponent : Control//, IPostBackEventHandler
结果按预期执行.


 



 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
理解ASP.NET5WebApps发布时间:2022-07-10
下一篇:
ASP.NET数据验证控件的常用的属性发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap