page在处理post请求时需要处理数据的加载IPostBackDataHandler和事件的触发IPostBackEventHandler.

数据的回发IPostBackDataHandler

在HTTP协议中,当用户通过向服务器发出一个请求的时候,页面HTML本身是不会发送回服务器的,请求中仅仅包含各种请求参数。在ASP.NET中,为了处理用户到达的要求,服务器端将会创建一个页面对象进行请求的处理工作。针对用户的回发请求来说,服务器又创建一个与生成当前的页面对象同类型的页面对象。因此,我们通过页面对象中的控件可以直接访问请求中的参数,以简化针对请求参数的访问。   需要从回发的请求参数中获取参数的控件,必须实现接口IPostBackDataHandler,这个接口的定义如下:

 public interface  IPostBackDataHandler

{

bool  LoadPostData(string postDataKey,NameValueCollection   postCollection);

void RaisePostDataChangedEvent();

}

}

   在控件的实现中,通过重写LoadPostData来获取自己特定的参数。方法的参数中postDataKey一般就是控件的UniqueID,第二个参数postCollection则是请求参数中所有参数的集合。

     如果控件的状态因为回发的参数发生了变化,则返回真,否则,返回假。控件获取请求参数的操作在页面事件的InitComplete事件之后,PreLoad事件之前完成。

回发服务器端事件IPostBackEventHandler

    控件不仅可以取得请求中的参数,还可以触发服务器端的事件。对button类的对象来说,各种Button都支持Click事件和Command事件。

用户对按钮点击是在浏览器中完成的,服务器上的对象又是如何触发点击事件的呢?

对于ASP.NET服务器来说,能够收到的只有来自客户端的请求,请求中包含了各种各样的请求参数,当用户在浏览器中点击按钮之后,服务器受到排的只有

含有按钮唯一的标识得请求。在服务器上,如果用户不是回发请求,那么就不会有任何的控件事件发生。当回发请求的时候,

我们可以在服务器上检查控件的ID是否与某个请求参数中的按钮的ID相同,如果是,那么我们就可以认为是这个按钮

导致了回发请求,我们就可以触发这个按钮的点击事件了。

    对于控件来说,如果需要你在服务器上检查请求是否由这个控件回发,并触发这个控件的事件,那么,这个控件必须实现接口IPostBackEventHandler,这个接口的定义如下:

public   interface   IPostBackEventHandler

{

void   RaisePostBackEvent(string eventArgument);

}

  由于匹配控件的ID与请求参数的名称这个问题将由页面对象完成,所以,需要我们完成的仅仅是在服务器上抛出事件了。所有控件的事件将在页面的Load事件之后,LoadComplete事件之前被触发。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值