风舞残阳 2008-4-2 13:43
ASP.NET中的doPostBack脚本函数实例
今天来说说当ASP.NET中的doPostBack脚本函数的应用,ASPX页面有包含asp
[img]http://bbs.jokcn.com/images/smilies/10.gif[/img]
inkButton或者带有AutoPostBack属性且其值为true的[wiki]服务器[/wiki]控件时,ASP.NET会自动为页面生成下面的脚本:
%26lt;input[wiki]type[/wiki]="hidden"name="__EVENTTARGET"id="__EVENTTARGET"value=""/%26gt;
%26lt;inputtype="hidden"name="__EVENTARGUMENT"id="__EVENTARGUMENT"value=""/%26gt;
function__doPostBack(eventTarget,eventArgument){
if(!theForm.onsubmit││(theForm.onsubmit()!=false)){
theForm.__EVENTTARGET.value=eventTarget;
theForm.__EVENTARGUMENT.value=eventArgument;
theForm.submit();
}
}
__doPostBack带有两个参数:eventTarget和eventArgument。
eventTarget是引起回送的控件的ID,eventArgument是回调参数(与控件相关的附加数据)。这两个参数分别由隐藏的两个表单域__EVENTTARGET和__EVENTARGUMENT保存。
使用这两个隐藏的表单可以查找引起页面回送的控件ID和回送时的参数:
protectedvoidPage_Load([wiki]object[/wiki]sender,EventArgse)
{
stringtarget=Request.Params["__EVENTTARGET"];
stringargs=Request.Params["__EVENTARGUMENT"];
}
因为asp:Button和asp:ImageButton不是使用__doPostBack回送页面,所以使用这两个控件回送页面时,上面的代码是无效的。
使用HTML控件回送页面:
%26lt;formid="form1"runat="server"%26gt;
%26lt;asp
[img]http://bbs.jokcn.com/images/smilies/10.gif[/img]
inkButtonID="LinkButton1"runat="server"%26gt;%26lt;/asp
[img]http://bbs.jokcn.com/images/smilies/10.gif[/img]
inkButton%26gt;
%26lt;inputtype="button"value="ClientControl"/%26gt;
%26lt;/form%26gt;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(this.IsPostBack)
{
stringtarget=Request.Params["__EVENTTARGET"];
stringargs=Request.Params["__EVENTARGUMENT"];
Response.Write("ButtonID:"+target+"%26lt;br/%26gt;");
Response.Write("Arguments:"+args+"%26lt;br/%26gt;");
}
}
加入的目的是为了让ASPX自动生成__doPostBack脚本。
阻止asp:Button提交页面:
%26lt;formid="form1"runat="server"%26gt;
%26lt;asp:ButtonID="Button1"runat="server"Text="Button"/%26gt;
%26lt;/form%26gt;
protectedvoidPage_Load(objectsender,EventArgse)
{
stringscr="returnconfirm(’Areyousureyouwanttosubmitthisform?’);";
this.Button1.Attributes.Add("onclick",scr);
}