知识大全 自定义回送处理的方法

Posted

篇首语:在劳力上劳心,是一切发明之母。事事在劳力上劳心,变可得事物之真理。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 自定义回送处理的方法相关的知识,希望对你有一定的参考价值。

  

  在 NET中 使用服务器按钮和链接按钮的时候 通过页面上的动作可以触发后台程序 实际上 NET是通过执行一个客户端的__doPostBack(eventTarget eventArgument); 方法来进行分析事件和参数并提交的 通常情况下是不需要做什么额外的了解 但是如果在动作之后提交之前想再插入其他的一些操作就有必要了解下

  当在提交前只是普通的确认或则选择是否的时候 我们可以用 JS的alert或confirm 方法 这些方法不会影响页面的提交 所以也不用额外的考虑 NET在客户端的处理方法 但是如果用户点击按钮后还需要在用户执行其他客户端事件后再进行提交 那么你会发现 NET的后台无法确认处理事件 这是因为 NET的按钮提交提供了参数 后台通过POST来的参数获得事件信息并予以相应的后台处理方法 由于在按钮动作后并不立即提交 在处理其他客户端事件后提交的参数没了或则说不由 NET发送页面了 所以后台无法获得参数来执行事件

  处理方法很简单 了解下 NET生成的客户端是怎么处理事件以及相应的参数以及怎么发送到服务器的就知道了

  最重要的就是__doPostBack这个函数 他的两个参数eventTarget eventArgument  写过自定义控件你就会了解到 控件生成这两个参数的目的就是在回送的时候获取是哪个控件触发了回送 并且带了什么参数

  也就是说 在你自己的客户端方法中调用__doPostBack 并带上适当的参数 就可以像 NET的处理方法一样的回送页面并让后台处理方法了

  建立一个LINKBUTTON控件你回发现控件生成脚本里的__doPostBack部分的第一个参数和控件的ID一样第二个参数为空

  如果在模板控件中输出的LinkButton 的__doPostBack部分的第一个参数的规则是将ID中的 _ 换成 $ 其中有可能会出现 __ 其实两个连续的 _ 的第二个是模板控件的行的标识的开头的 _ 对比下生成的ID和这个参数很容易就理解了 Button也一样 虽然不会看到客户端生成出 __doPostBack 这是因为input submit处理机制 但同样可以用__doPostBack来提交它 方法一样 效果也是一样的

  下面是一个例子的部分代码

  客户锻添加以下   <script language="javascript"><!--function EventGet(obj)eventTarget = obj.id.split("_").join("$").split("$$").join("$_");eventArgument = \'\';__doPostBack(eventTarget, eventArgument);return false;//-->  </script>

  然后为需要用到这个方法的控件加个onclick的属性并触发事件return EventGet(this),当然“EventGet” 是我自己命的名,你可以改成你所需要的,这个方法在这里没有实现什么功能,只是举例说明.NET的回送可以自定义并添加更多方法来实现多样的处理。.winGWIt.CoM

"); eventArgument = \'\'; __doPostBack(eventTarget, eventArgument); return false; //-->   <script language= javascript ><! function EventGet(obj)eventTarget = obj id split( _ ) join( $ ) split( $$ ) join( $_ );eventArgument = ;__doPostBack(eventTarget eventArgument);return false;// >  </script>

  然后为需要用到这个方法的控件加个onclick的属性并触发事件return EventGet(this) 当然 EventGet 是我自己命的名 你可以改成你所需要的 这个方法在这里没有实现什么功能 只是举例说明 NET的回送可以自定义并添加更多方法来实现多样的处理

  以下是一个简单的利用这个原理用层模拟CONFIRM对话框的示例

  前台ASPX ====================================================================<%@ Page language= c# Codebehind= WebForm aspx cs AutoEventWireup= false Inherits= test WebForm %><!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN ><HTML> <HEAD>  <title>WebForm </title>  <meta content= Microsoft Visual Studio NET name= GENERATOR >  <meta content= C# name= CODE_LANGUAGE >  <meta content= JavaScript name= vs_defaultClientScript >  <meta content= name= vs_targetSchema >  <script language= javascript >  var EventObj;  function operation(obj)     if(obj innerHTML== )       obj innerHTML= ;    obj parentNode parentNode style height= px ;     obj parentNode nextSibling style display= none ;        else if(obj innerHTML== )       obj innerHTML= ;    obj parentNode parentNode style height= px ;    obj parentNode nextSibling style display= block ;      else       obj parentNode parentNode style display= none ;          function onformsubmit(obj)     EventObj = obj;   win style display= block ;   return false;      function formsubmit()     eventTarget = EventObj id split( _ ) join( $ ) split( $$ ) join( $_ );   eventArgument = ;   __doPostBack(eventTarget eventArgument);    </script> </HEAD> <body>  <form id= Form method= post runat= server >   <div id= win >    <span >     <font face= webdings onclick= operation(this); > </font> <font face= webdings onclick= operation(this); >      r</font> </span><span>确定操作?</span><br>    <span ><font onclick= formsubmit(); >[YES]</font>&nbsp;&nbsp;&nbsp;<font onclick= operation(this); >[NO]</font>    </span>   </div>   <br>   <br>   <br>   <asp:LinkButton id= Button runat= server >submit</asp:LinkButton>     </form> </body></HTML>

  后台======================================================================using System;using System Collections;using System ComponentModel;using System Data;using System Drawing;using System Web;using System Web SessionState;using System Web UI;using System Web UI WebControls;using System Web UI HtmlControls;

  namespace test /// <summary> /// WebForm 的摘要说明  /// </summary> public class WebForm : System Web UI Page   protected System Web UI WebControls LinkButton Button ;

  private void Page_Load(object sender System EventArgs e)     // 在此处放置用户代码以初始化页面   Button Attributes Add( onclick return onformsubmit(this) );      private void Button _Click(object sender System EventArgs e)     Response Write( this page is submit );    #region Web 窗体设计器生成的代码  override protected void OnInit(EventArgs e)     //   // CODEGEN: 该调用是 ASP NET Web 窗体设计器所必需的    //   InitializeComponent();   base OnInit(e);      /// <summary>  /// 设计器支持所需的方法 不要使用代码编辑器修改  /// 此方法的内容   /// </summary>  private void InitializeComponent()         this Button Click += new System EventHandler(this Button _Click);   this Load += new System EventHandler(this Page_Load);

    #endregion

  

cha138/Article/program/net/201311/13622

相关参考

知识大全 ASP.net MVC自定义错误处理页面

ASP.netMVC自定义错误处理页面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPN

知识大全 c#自定义控件中事件的处理

  usingSystem; cha138/Article/program/net/201311/14278

知识大全 Asp.net的处理机制和自定义WebServer

Asp.net的处理机制和自定义WebServer  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 c# 实现自定义属性改变触发自定义事件

  代码内含说明(界面是两个文本框textboxtextbox和一个button界面的Load事件button的click事件)usingSystem;usingSystemCollectionsGe

知识大全 为DataGrid自定义分页添加自定义导航和分页信息

为DataGrid自定义分页添加自定义导航和分页信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

在ExCe12003中,用户可以自定义序列,方法是

在ExCe12003中,用户可以自定义序列,方法是_____。A、通过“工具”/“自定义”命令B、通过“插入”/“自定义”命令C、通过“数据”/“自定义”命令D、通过“编辑”/“自定义”命令答案:A解

知识大全 ASP.NET入门教程 6.3.1 回送结构[2]

ASP.NET入门教程6.3.1回送结构[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 ASP.NET入门教程 6.3.1 回送结构[1]

ASP.NET入门教程6.3.1回送结构[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 自定义taglib的开发

Struts:自定义taglib的开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自定义标签

知识大全 探索用户自定义数据类型

SQL技巧:探索用户自定义数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用户自定义数据