`

__doPostBack作为在asp.net中一个很核心很重要的部分,我们有必要深入了解一下.

阅读更多

其实,__doPostBack是一个很简单的脚本函数.代码如下:

 

//__doPostBack
<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();
  }

 

原来是在submit上做文章啊.microsoft呈现给我们的就是这种精巧的思维!

我看到,asp.net现在页面上添加了两个hidden input,这两个input分别用来存放触发postback的control的ID和参数.这就是我们大部分人认识到的:

__doPostBack(obj1,obj2)的第一个参数是控件ID,第二个参数是postback的参数.然后就可以在后台用Request.Form["__EVENTTARGET"]和 Request.Form["__EVENTARGUMENT"]取得控件ID和参数.

不过,另外要注意的就是asp.net的webcontrols中,Button或其它***Button,如ImageButton就特殊了,它们不是利用 __doPostBack来实现postback的.为什么这样,可能因为Button在html中本来就是有触发submit事件的功能吧.asp.net不过是要令原来html中一些不能触发submit的东西submit,才弄出了__doPostBack来实现吧.

所以如果是Button的postback,在后台是不能用Request.Form["__EVENTTARGET"]和Request.Form["__EVENTARGUMENT"]取得控件ID和参数的.那么,怎么取呢?看代码:

 

//取Button
foreach (string str in Request.Form)
{  
   Control c = Page.FindControl(str);  
   if (c is Button)  
   {    
     control = c;    
     break;  
   }
}

 

上述写法可以在后台找到Button.在Button的提交过程中,Button会将Button本身的ID作为Request.Form的一个Key,它的Value是Button的 Text属性值,回传给服务器.所以可以在后台循环Form.Keys取到所提交的Button,以执行相应的函数.ImgButton也差不多,不同就在于,它不是用ImageButton的ID作为Request.Form的Key,它是用ImageButton的ID加上.x和.y作为Key,在 Request.Form添加两上键值对,这两个键值应该是对应ImageButton的图片大小的,了解了这个规律后,我们仍然可以通过一定的方式得到是否是由ImageButton引发的PostBack.

通过获取到提交过来的控件ID后, Asp.net就能找到对应注册了事件的控件,并触发事件了.

分享到:
评论

相关推荐

    Asp.net中doPostBack介绍和弹出窗体与父窗体之间的传值

    在ASP.NET开发中,`doPostBack`是一个非常关键的JavaScript函数,它主要用于触发服务器端的回发事件。本文将深入探讨`doPostBack`的工作原理及其在弹出窗体(弹框)与父窗体间传递数据的应用。 首先,让我们了解`...

    解决IE10以上版本doPostBack未定义

    .Net4.0下ASP.NET在IE10以上版本访问的时候,遇到分页或者控件回发的时候会提示doPostBack未定义,这个补丁是用来在服务器端修正这个问题,安装完需要重启。如不想在服务器修正,可以看...

    ASP.NET中前台javascript与后台代码调用

    本文将深入探讨ASP.NET中前台JavaScript与后台代码调用的技术细节,包括IPostBackEventHandler接口的使用、ClientScript对象的功能以及如何通过__doPostBack函数实现前后端的通信。 ### ASP.NET中前后端通信的基础 ...

    asp.net控制键盘keycode事件

    在ASP.NET中,开发Web应用程序时,我们可能会遇到需要监听用户键盘输入的情况,例如实现特定按键触发特定功能。本文将详细讲解如何在ASP.NET中处理键盘事件,特别是使用`keycode`来识别用户按下的键。 一、键盘事件...

    解决.Net4.0的网站在IE10以上版本出现_doPostBack未定义

    .Net4.0下ASP.NET在IE10以上版本访问的时候,遇到分页或者控件回发的时候会提示doPostBack未定义,这个补丁是用来在服务器端修正这个问题,安装完需要重启。如不想在服务器修正,可以看 ...

    asp.net页面提交

    ASP.NET页面提交是Web开发中的一个关键概念,主要用于创建交互式的动态网页。在这个过程中,C#作为.NET框架的主要编程语言,被广泛用于编写服务器端代码,处理用户输入和响应。"PostBack"是ASP.NET中一个核心的概念...

    "__doPostBack”未定义的解决办法。app_Browsers.rar下载

    这个函数在ASP.NET Web Forms应用中广泛使用,当用户与网页上的控件交互时,如点击按钮或更改下拉框,`__doPostBack`会发送一个异步请求到服务器,从而更新页面的部分内容而无需刷新整个页面。 标题提及的问题是`__...

    .Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法

    针对.Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法

    doPostBack 实例

    `doPostBack`的主要作用是模拟用户点击一个提交按钮,使页面进行一次完整的POST回送,从而在不刷新整个页面的情况下更新部分网页内容,这就是我们常说的ASP.NET中的部分页面刷新功能。 `doPostBack`的源码主要由ASP...

    ASP.NET与IE11兼容性解决方法

    2. **更新ASP.NET页面头部**:确保在每个ASP.NET页面的部分包含以下脚本引用,以确保IE11能够识别ASP.NET的JavaScript函数: ```html window.attachEvent("onload", function() { Page_Load(); }); ``` 其中...

    asp.net 鼠标点击事件

    在ASP.NET中,鼠标点击事件是网页交互的重要组成部分,它允许开发者捕捉用户的鼠标操作并执行相应的代码逻辑。这里我们主要关注的是`onmousedown`事件,它是HTML和JavaScript中的一个事件,但同样可以在ASP.NET中...

    doPostBack机制深入了解 源码实例

    在ASP.NET web应用程序中,`doPostBack`是一个非常关键的机制,它负责引发服务器端的事件处理,使得页面能够在不刷新整个页面的情况下与服务器进行交互。这个机制是ASP.NET AJAX的核心部分,也是ASP.NET WebForm模型...

    Ajax联动菜单(asp.net)

    在ASP.NET开发中,Ajax联动菜单是一种常见的交互设计,它能提供流畅的用户体验,无需页面刷新即可更新相关信息。Ajax(Asynchronous JavaScript and XML)技术利用JavaScript异步处理数据,结合XML或其他格式的数据...

    ASP.NET中前台javascript与后台代码调用.doc

    在ASP.NET应用程序中,Session状态管理是一项重要的功能,用于跟踪用户的会话状态。Session会在以下几种情况下结束: 1. **用户长时间未与服务器交互**:如果用户在设置的Session过期时间内没有与服务器进行任何...

    ASP.NET2.0中编程实现GridView与FormView的主-详细视图

    在 ASP.NET 2.0 中,GridView 控件和 FormView 控件都是非常重要的控件,通常用于显示数据。GridView 控件提供了一个表格视图,显示多条记录的主要信息,而 FormView 控件则用于显示指定记录的详细信息。本文将详细...

    ASPX_ajaxPro2.zip_Sharp_ajaxpro.2 source

    AjaxPro是.NET Framework下的一款开源库,它允许开发者在ASP.NET环境中构建类似于AJAX(Asynchronous JavaScript and XML)的应用,提供无刷新页面更新,提升网页应用的交互性和性能。 这个压缩包中的子文件涵盖了...

    Asp.net中在客户端触发服务端事件

    在Asp.net中,触发服务端事件是网页与服务器间通信的关键部分,使得开发者能够实现动态交互的功能。根据描述和部分内容,我们可以详细分析两种不同类型的客户端事件触发方式: 1. WebControls中的Button和...

    asp.net AJAX分页 分页代码

    ASP.NET AJAX分页技术是Web开发中的一个重要概念,它允许用户在不刷新整个页面的情况下实现数据的分块加载,提供流畅的用户体验。本教程将深入探讨ASP.NET AJAX分页的相关知识点,以及如何编写分页代码。 1. **什么...

    分页代码ASP.NET自动设置每页显示数目、跳转到指定页面、用户自定义控件

    在ASP.NET开发中,分页是网页数据展示中常见的功能,尤其在处理大量数据时,分页能够提高用户体验,减少服务器负担。本教程将详细讲解如何实现ASP.NET中的分页功能,包括自动设置每页显示数目、跳转到指定页面以及...

    ASP.NET中常用的JavaScript操作

    在ASP.NET开发中,JavaScript是一种常用的客户端脚本语言,它能增强用户交互并提供动态功能。以下是对ASP.NET中常用JavaScript操作的详细说明: 1. **为button控件添加确认功能**: 当需要在用户点击按钮前进行...

Global site tag (gtag.js) - Google Analytics