`
sunnymelon
  • 浏览: 95011 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

asp.net页面回传与js调用服务端事件、PostBack的原理详解

    博客分类:
  • .Net
阅读更多
原文:http://whx.tzgt.gov.cn/newOperate/html/1/11/112/11756.html

摘要:
ASP.ENT中,有两种实现页面PostBack的机制,不管是哪种回传方式,最终均是Form表单提交。

一、原始的Form表单提交
WebControls中的Button和ImageButton控件,到客户端会转换为
<input type="submit" name="" /> 
<input type="image" name=""/>


二、利用JavaScript和隐藏表单实现表单提交
除Button和ImageButton外,其他WebControls控件均是以这种方式实现页面回传机制的。具体步骤如下:
1、如果页面中存在除Button和ImageButton外的服务端控件,ASP.NET页面框架会自动在页面中增加两个隐藏表单。
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

2、服务端自动生成如下的JavaScript方法,处理事件的发送。
<script type="text/javascript">
<!--
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>

3、每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码。
以<asp:LinkButton>服务端控件为例说明,以下为服务端到客户端的映射:
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>

但是,经过试验,我发现<asp:Checkbox>、<asp:TextBox>等服务端控件并不能自动在客户端生成调用JavaScrip的__doPostBack方法的代码。
4.客户端触发事件后调用__doPostBack方法,将表示触发的控件源的eventTarget 和事件参数eventArgument分别付给两个隐藏域__EVENTTARGET和__EVENTARGUMENT,然后提交Form,在服务端根据__EVENTTARGET和__EVENTARGUMENT来判断是哪个控件的什么事件触发了。
分享到:
评论

相关推荐

    asp.net页面提交

    c#语音编写的表单提交,及页面的postback文题!

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

    ASP.NET webforms数据库操作基础例程(POSTBACK)

    例程基于ASP.NET webforms框架,采用POSTBACK技术,展现了对数据库相关的各项操作与内容展示,并实现了分页显示。相关数据库请下载本人资源《中国省级区域概况-ASP.NET例程数据库(SQL2008R2)》...

    ASP.NET的网页代码模型及生命周期

    但是与.cs页面编译过程不同的是,当浏览者第一次浏览到.aspx页面时,ASP.NET自动生成该页的.NET类文件,并将其编译成另一个.DLL文件。 当浏览者再一次浏览该页面的时候,生成的.DLL就会在服务器上运行,并响应用户在...

    ASP.Net皮肤换肤控件

    分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,...

    asp.net技术内幕(1)

    第一部分 使用ASP.NET Web表单 &lt;br&gt;第1章 建立ASP.NET页面 &lt;br&gt;1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

    微軟MVP的ASP.NET 4.5專題實務I

     一個範例學通 PostBack觀念,瞬間領悟ASP.NET精髓!  深入剖析GridView範例,寫程式徹底控制GridView、ListView。 。  七個範例學會 RowDataBound事件,打造您專屬的GridView畫面與功能。  最精華的ADO.NET理論...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    3.4 ASP.NET页面的事件 57 3.5 处理回送 59 3.6 跨页面的传送 59 3.7 ASP.NET应用程序文件夹 66 3.7.1 \App_Code文件夹 66 3.7.2 \App_Data文件夹 70 3.7.3 \App_Themes文件夹 70 3.7.4 \App_GlobalResources...

    asp.net(c#)网页跳转七种方法小结

    ①response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!...

    浅谈ASP.NET的Postback 实例代码第1/2页

    我们现在来看看ASP.NET整个Postback程序处理的过程。 首先我们通过一个Sample来看ASP.NET如何处理一个通过Click一个Button引起的Postback。下面是Web Page的HTML: 代码如下: &lt;&#37;@ Page Language=”C#” ...

    页面回传后滚动条保持原位

    搜到这个资源这能说是您的福音了,文档里面的代码非常的简单易用,文档主要解决的问题是 页面回传刷新后滚动条保持原位 用UpdatePanel的情况下滚动条保持原位 解决用UpdatePanel的一些不兼容问题

    ASP.net技术内幕

    内容包括:ASP.NET Web表单的使用,高级ASP.NET页面的开发,ADO.NET的使用,ASP.NET应用程序的使用, ASP.NET应用程序的保护,ASP.NET Web服务的建立,.NET框架的利用,自定义的ASP.NET控件的建立,ASP.NET的应用...

    ASP.NET2.0高级编程(第4版)1/6

    3.4 ASP.NET页面的事件57 3.5 处理回送59 3.6 跨页面的传送59 3.7 ASP.NET应用程序文件夹66 3.7.1 \\App_Code文件夹66 3.7.2 \\App_Data文件夹70 3.7.3 \\App_Themes文件夹70 3.7.4 \\App_GlobalResources  文件夹...

    asp.net动态创建控件实现多文件上传

    asp.net中的FileUpload控件一次只能实现上传一个文件,若要上传多个文件的话必须使用多个FileUpload控件,但一次上传多少个文件有时不确定,所以就想到了动态创建控件。此处是用下拉列表控件的postback控制的,要想...

    asp.net一夜速成18

    Invalid postback or callback argument. Event validation is enabled using &lt;pages enableEventValidation="true"/&gt; in configuration or &lt;%@ Page EnableEventValidation="true" %&gt; in a page. For security ...

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    尽管这样的default.aspx页面实际上永远不会被真正执行,但是有他们的帮助,就能让IIS顺利地将页面请求转发至ASP.NET解析器,从而,使得基于HTTPModule的URL重写规则,被执行。 好了,创建这两个目录及default.aspx...

    asp.net 禁止F5和后退

    执行过postback操作的web页面在刷新的时候,浏览器会有“不重新发送信息,则无法刷新网页”的提示,若刚刚执行的恰好是往数据库插入一条新记录的操作,点[重试]的结果是插入了两条重复的记录,以前一直是用保存数据...

    GridView(For Asp.net C# vs2005)控件

    最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用...

    asp.net技术内幕(5)

    第一部分 使用ASP.NET Web表单 &lt;br&gt;第1章 建立ASP.NET页面 &lt;br&gt;1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

    asp.net技术内幕(4)

    第一部分 使用ASP.NET Web表单 &lt;br&gt;第1章 建立ASP.NET页面 &lt;br&gt;1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

Global site tag (gtag.js) - Google Analytics