日期:2014-05-20  浏览次数:20389 次

关于PostBack??
问个简单的问题,页面上有两个button,而面回发的时候,page怎么找到谁触发post-back的??

------解决方案--------------------
打开你的页面在客户端的源代码,你可以看到事件是由 ____doPostBack 函数触发的。

并且可以找到定义:

function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}

http协议的post命令定义了那些参数的表示方法。服务器可以通过检查 __EVENTTARGET 来获得目标控件。

另外,从这里看到直接对 form 执行 submit() 也是 PostBack,只是没有 __EVENTTARGET 来标记那个控件触发的提交。

所有控件仍然有可能触发 xxxxChanged 类型的事件,之后才触发这个控件的事件。有一些事件虽然其名不太一样,例如 xxxxSelectedIndexChanged,但是仍然是因为它的值改变而触发的,与 __EVENTTARGET 并无关系。