本站某些作品来源于互联网,如果侵犯了您的利益,请留言说明!
今天来说说当ASP.NET中的doPostBack脚本函数的应用,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带有两个参数:eventTarget和eventArgument。
eventTarget是引起回送的控件的ID,eventArgument是回调参数(与控件相关的附加数据)。这两个参数分别由隐藏的两个表单域__ EVENTTARGET和__ EVENTARGUMENT保存。
使用这两个隐藏的表单可以查找引起页面回送的控件ID和回送时的参数:
protected void Page_Load(object sender, EventArgs e)
{
string target = Request.Params["__EVENTTARGET"];
string args = Request.Params["__EVENTARGUMENT"];
}
因为asp:Button和asp: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: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);
}
作者:gdgzboy@牛C网
地址:http://www.niuc.net/post/1327/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
ASP.NET中的HTTP模块和处理程序
asp.net 2.0 下的表单验证Cookieless属性
C#中Delegate浅析与思考
将一个图片按比例缩放显示在一个Frame中
从资源文件中取图片
C#多线程-不同线程之间通过事件委托封送调用方法
一个DataGrid多次绑定不同数据的时候我的用法
在C#程序设计中使用Win32类库
LINQ 的演变及其对 C# 设计的影响
用C#轻松在DOTNET中实现缩略图
上一篇



