获取引发PostBack的对象(获取引发回送的控件)

既然asp.net能把客户端的操作包装事件,  PostBack之后从Page.Request.Forms里肯定能找到到底是哪个控件的提交.
看了一下asp.net生成的html, 我发现对客户端来说, 引发postback的方法有两种, 一种是submit按钮, 一种是调用__doPostBack()
例如Button的html代码是
<input type="submit" name="Button1" value="提交" id="Button1"  />
而LinkButton是
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
对于在客户端调用__doPostBack的控件来说, 从
function __doPostBack(eventTarget, eventArgument) {
  var theform;
  if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
   theform = document.forms["Form1"];
  }
  else {
   theform = document.Form1;
  }
  theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
  theform.__EVENTARGUMENT.value = eventArgument;
  theform.submit();
 }
可以看到控件名被保存在.__EVENTTARGET的hidden里. 可以通过Page.Request.Form["__EVENTTARGET"]得到控件的ClientID
而对于submit, 就要在VS.NET里用调试窗口一个个查看Request.Forms的变量值了.  原来他的ClientID是Page.Request.Form的最后一个Key, 可以通过Page.Request.Form.AllKeys[Page.Request.Form.AllKeys.Length - 1]得到
如果还要得到这个控件的引用,  调用FindControl方法就可以了.

http://www.cnblogs.com/yok/archive/2005/01/19/94356.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值