ASP.NET Postback事件来源控件的获取

来源:互联网 发布:新还珠格格知画生孩子 编辑:程序博客网 时间:2024/06/07 13:15

    当在网页内使用了ASP.NET的LoginStatus控件后,客户端单击Logout链接,会激发页面回送,即PostBack。对于LoginStatus控件,这一过程是由动态生成的客户端脚本完成的,

LoginStatus控件在客户端对应的标记如下:

<a id="LoginStatus1" href="javascript:__doPostBack('LoginStatus1$ctl00','')">Logout</a>
其中javascript:__doPostBack(arg1,arg2)方法如下:

<script type="text/javascript">//<![CDATA[var theForm = document.forms['form1'];if (!theForm) {    theForm = document.form1;}function __doPostBack(eventTarget, eventArgument) {    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {        theForm.__EVENTTARGET.value = eventTarget;         theForm.__EVENTARGUMENT.value = eventArgument;        theForm.submit();    }}//]]></script>
    结合href的内容,通过doPostBack方法的实现可以看出,doPostBack执行过程中,引发事件的控件ID(在本例中为'LoginStatus1$ctl00')和事件的参数(本例中为'')被写入到表单的两个域中,分别为__EVENTTARGET和__EVENTARGUMENT。这两个域为隐藏域。因此,当PostBack发生后,我们在服务器端可以通过读取Post表单的这两个隐藏域来获取激发回送事件的控件ID和事件参数。例如:

String target = Request.Form["__EVENTTARGET"];
有了以上方法,可以方便地根据回送事件的上下文控制后续的处理动作。有了这两个隐藏域,开发者无需再去手工添加客户端脚本来标记事件。

    关于__doPostBack方法的更详尽的分析,可以参见 http://www.cnblogs.com/jinianjun/archive/2012/02/09/2343868.html

原创粉丝点击