ASP.NET中的__doPostBack脚本函数

本文详细介绍了ASP.NET中页面回送的工作原理,包括__doPostBack函数的作用及使用方法,并展示了如何通过事件参数获取触发回送的控件ID及其参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ASPX页面有包含asp:LinkButton或者带有AutoPostBack属性且其值为true的服务器控件时,ASP.NET会自动为页面生成下面的脚本:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />

<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

function __doPostBack(eventTarget, eventArgument) {

    if(!theForm.onsubmit || (theForm.onsubmit() != false)) {

        theForm.__EVENTTARGET.value = eventTarget;

        theForm.__EVENTARGUMENT.value = eventArgument;

        theForm.submit();

       }

}

 

__doPostBack带有两个参数:eventTargeteventArgument

eventTarget是引起回送的控件的IDeventArgument是回调参数(与控件相关的附加数据)。这两个参数分别由隐藏的两个表单域__ EVENTTARGET__ EVENTARGUMENT保存。

 

使用这两个隐藏的表单可以查找引起页面回送的控件ID和回送时的参数:

protected void Page_Load(object sender, EventArgs e)

{

string target = Request.Params["__EVENTTARGET"];

    string args = Request.Params["__EVENTARGUMENT"];

}

因为asp:Buttonasp:ImageButton不是使用__doPostBack回送页面,所以使用这两个控件回送页面时,上面的代码是无效的。

 

使用HTML控件回送页面:

<form id="form1" runat="server">

<asp:LinkButton ID="LinkButton1" runat="server"></asp:LinkButton>

<input type="button" value="Client Control" onclick="javascript:__doPostBack('Button1', 'Button Click');" />

</form>

 

protected void Page_Load(object sender, EventArgs e)

{

    if(this.IsPostBack)

    {

        string target = Request.Params["__EVENTTARGET"];

        string args = Request.Params["__EVENTARGUMENT"];

        Response.Write("Button ID: " + target + "<br />");

        Response.Write("Arguments: " + args + "<br />");

    }

}

加入<asp:LinkButton ID="LinkButton1" runat="server"></asp:LinkButton>的目的是为了让ASPX自动生成__doPostBack脚本。

 

阻止asp:Button提交页面:

<form id="form1" runat="server">

    <asp:Button ID="Button1" runat="server" Text="Button" />

</form>

protected void Page_Load(object sender, EventArgs e)

{

    string scr = "return confirm('Are you sure you want to submit this form?');";

    this.Button1.Attributes.Add("onclick", scr);

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值