__doPostBack简单的使用方法

这里需要提一下的是,asp.net编程提供了服务端控件和客户端控件的说法,其实还是脱离不了HTML的本质,客户端和服务端需要交互必须要提交,提交有两种方式get和post,get就是通过向服务端发送连接地址,服务端通过地址的参数来获得信息的,一般这些参数都是明文,能在浏览器地址栏看到。而post是通过表单的input等元素提交到服务端的页面的,这些数据一般是看不到的。asp.net的服务端控件其实就是对一般的HTML控件做了个包装,大体是通过隐藏控件提供控制的参数的。  
这里介绍一个常用的函数_doPostBack,这个函数如果如果是ASP.Net render出来的页面就是自动产生这个函数,比如有带autopostback属性的控件,且其属性为true的页面,带编辑列的datagrid页面。  
__doPostBack是通过__EVENTTARGET,__EVENTARGUMENT两个隐藏控件向服务端发送控制信息的,__EVENTTARGET为要调用控件的名称,如果要调用的控件是子控件,用''$'或':'分割父控件:子控件,__EVENTARGUMENT是调用事件时的参数  
下面演示下如何调用后台事件:  
1.新建工程  
2.拖入一个服务端Button1,一个DropDownList1和一个客户端Button  
3.设置DropDownList1的AutoPostBack属性为True,Button1的Visible为False  
4.双击Button1,在事件里写下Response.Write("hello:" );  
5.页面的HTML里找到客户端Button,写入οnclick="__doPostBack('Button1','')"  
6.编译,运行,点击Button是不是出现了"Hello"  
7.查看源代码,发现里面多了下面行  

复制代码代码如下:

<script language="javascript">   
<!--   
function __doPostBack(eventTarget, eventArgument) {   
var theform;   
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {   
theform = document.forms["Form1"];   
}   
else {   
theform = document.Form1;   
}   
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");   
theform.__EVENTARGUMENT.value = eventArgument;   
theform.submit();   
}   
// -->   
</script> 


以及两个隐藏控件 

复制代码代码如下:


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





值得注意的是,_doPostPack的第一个参数是大小写不敏感的  

细心的人会发现,在__doPostBack里,提交调用的是theform.submit(),这样就导致对Form的onsubmit事件校验失效了,幸好这个问题在asp.net 2.0已经修复了。这里提供一个替换的解决办法,在Form的最下面插入下面的代码,这段代码在保证不管是不是render出来的页面均有效  

复制代码代码如下:

<script language="javascript">  
<!--  
function __doPostBack_Ex(eventTarget, eventArgument)   
{  
var theform;  
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {  
theform = document.forms[0];  
}  
else {  
theform = document.forms[0];  
}  

if(!theform.__EVENTTARGET)  
{   
theform.appendChild(document.createElement("<input type='hidden' name='__EVENTTARGET'>"));  
}  

if(!theform.__EVENTARGUMENT)  
{   
theform.appendChild(document.createElement("<input type='hidden' name='__EVENTARGUMENT'>"));   
}  

theform.__EVENTTARGET.value = eventTarget.split("$").join(":");  
theform.__EVENTARGUMENT.value = eventArgument;  
if ((typeof(theform.onsubmit) == "function"))   
{  
if(theform.onsubmit()!=false)  
{  
theform.submit();   
}  
}  
else  
{   
theform.submit();   
}  

function __doPostBack(eventTarget, eventArgument)  
{  
__doPostBack_Ex(eventTarget, eventArgument);  
}  


}  
// -->  
</script> 

转载于:https://www.cnblogs.com/abc123456/p/4553831.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单时隙灵敏度有什么影响_英国大学设计出低价开源单分子显微镜

低价单分子显微镜英国谢菲尔德大学的一个科学家和学生团队设计并建造了一台专业单分子显微镜&#xff0c;他们向外界分享了建造方法&#xff0c;以帮助世界各地的许多实验室使用这种设备。这台名为smfBox的显微镜能够进行单分子测量&#xff0c;让科学家一次只看一个分子&#…

安装TokuDB引擎

前言&#xff1a;TokuDB 是一个高性能、支持事务处理的 MySQL 和 MariaDB 的存储引擎。TokuDB 的主要特点是高压缩比&#xff0c;高 INSERT 性能&#xff0c;支持大多数在线修改索引、添加字段,非常适合日志型应用场景&#xff08;只有insert&#xff0c;select&#xff0c;少u…

ul1977标准_UL 1977连接器认证知识

第一节、认识UL认证 和 CUL认证一&#xff0e;UL认证的一些标识:1. UL列名标志是最常用的 UL 标志。如果产品贴有这一标志&#xff0c;即表明 UL 认定该产品的代表性样品符合 UL 的安全要求。2. UL 认可零部件标志以上都是UL实验室列名&#xff0c;(从左至右)一种仅用于美国&…

(二)spring MVC配置

使用Maven添加依赖的jar包第一个还没用上 刚开始没加spring-context&#xff0c;Controller没法用 web.xml配置 1. 配置DispatcherServlet <servlet><description>Spring MVC Servlet</description><servlet-name>springMVC</servlet-name>…

ubuntu安装portainer_Docker【二】:Docker管理工具Portainer

本文目录&#xff1a;1.前言2.Portainer介绍与安装3.Portainer使用4.配置拼音搜索5.总结1、前言&#xff1a;系统环境&#xff1a; ubuntu16.04docker版本&#xff1a;1.12.6关于docker的安装与常用命令使用&#xff0c;可以看&#xff1a;Docker【一】&#xff1a;Docker入门及…

练习作品13:电子试卷自动生成软件

转载于:https://www.cnblogs.com/plug/p/4558216.html

动力环境监控系统论文_机房动力环境监控系统说明

根据机房智能环境监控项目的具体要求&#xff0c;机房环境综合监控系统分为动力监控系统(对机房内的常规动力设备&#xff0c;如发电机、配电柜、UPS、蓄电池、机柜等实时监控)、环境监控系统(对温湿度、机房空调、漏水、新风系统等实时监控)和安全监控系统(对烟感传感器等系统…

ceph 存储 对比_分布式存储系统 Curve

CURVE 是网易开源的高性能、高可用、高可靠分布式存储系统&#xff0c;具有非常良好的扩展性。基于该存储底座可以打造适用于不同应用场景的存储系统&#xff0c;如块存储、对象存储、云原生数据库等。授权协议: Apache 2.0开发语言: C/C开发厂商&#xff1a;网易软件类型&…

IOS添加pch预编译文件

1.右键组名&#xff0c;New File->IOS->other选择PCH文件 2.在Build Settings的搜索栏输入prefix 3.找到Prefix Header 3.添加PCH文件&#xff0c;方法一&#xff1a;项目名/****.pch.(推荐) &#xff1b; 方法二&#xff1a;$(SRCROOT)/项目名/***.pch转载于:https://w…

前端封装接口弹出错误_项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口...

前言一个后端接口大致分为四个部分组成&#xff1a;接口地址&#xff08;url&#xff09;、接口请求方式&#xff08;get、post等&#xff09;、请求数据&#xff08;request&#xff09;、响应数据&#xff08;response&#xff09;。如何构建这几个部分每个公司要求都不同&am…

关于重写equals()与hashCode()

在HashMap与HashSet中&#xff0c;是不允许元素重复的。 在判定时比较元素的hashCode()是否相等&#xff0c;equals()是否返回true&#xff0c;那么问题来了 这是一个Person类 public class Person { private String id; private String name; private Integer age; …

金算盘高手论坛资料中心_3D304期 菜鸟论坛精英PK专栏 速来围观!!

点上方“菜鸟选号论坛”→点右上角“...”→选“星标★”每日上午更新&#xff0c;星标置顶与大神不走散苹果是置顶&#xff0c;安卓是星标 点击"菜鸟选号论坛"关注我们论坛明星版块&#xff0c;集全网各路高手之大乘&#xff0c;打造草根明星 展示舞台。同时主要是为…

诸暨机器人餐厅价格_现场 | 一家尝出“锅气”的餐厅 探店机器人餐厅

观点地产网蔡澜先生的书中曾说过&#xff0c;“食在广东&#xff0c;其实是食在顺德”&#xff0c;顺德这座美食之都&#xff0c;满足了对食物异常挑剔的广东人的味蕾追求。最近&#xff0c;一家坐落“凤城”顺德的餐厅开业了。餐厅开业本身并没什么稀奇&#xff0c;不过这是一…

VelocityTracker简要

翻译自&#xff1a;http://developer.android.com/reference/android/view/VelocityTracker.html參照自&#xff1a; http://blog.jrj.com.cn/4586793646,5298605a.html android.view.VelocityTracker主要用跟踪触摸屏事件&#xff08;flinging事件和其它gestures手势事件&…

积木赛尔号机器人_赛尔号:谱尼三次败北,经历过被吊打、封印,一次比一次惨...

赛尔号&#xff1a;谱尼三次败北&#xff0c;经历过被吊打、封印&#xff0c;一次比一次惨。精灵类型的动漫层出不穷&#xff0c;在我们儿时看过精灵宝可梦、数码宝贝等等作品。国内的动漫则是有赛尔号和洛克王国&#xff0c;相较而言还是赛尔号更加的出名一些&#xff0c;更加…

xenu工具介绍

Xenu Link Sleuth 也许是你所见过的最小但功能最强大的检查网站死链接的软件了。你可以打开一个本地网页文件来检查它的链接&#xff0c;也可以输入任何网址来检查。它可以分别列出网站 的活链接以及死链接&#xff0c;连转向链接它都分析得一清二楚&#xff1b;支持多线程&…

安卓模拟器_exagear模拟器安卓模拟器

Exagear模拟器简介让Android 设备用户重温经典 PC 游戏&#xff0c;来自俄罗斯的初创公司 Eltechs发布了一款全新的 Android 游戏模拟器 ExaGear Strategies。该游戏模拟器的主要功能就是将经典的 PC 游戏带到 Android 智能手机或平板电脑上来。公告1.exagear软件和游戏&#x…

HBase 常用Shell命令

两个月前使用过hbase&#xff0c;现在最基本的命令都淡忘了&#xff0c;留一个备查~ 进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证&#xff0c;需要事先使用相应的keytab进行一下认证&#xff08;使用kinit命令&#xff09;&#xff0c;认证成功之后…

将Excle数据导入到数据库

假如Excel中的数据如下&#xff1a; 数据库建表如下&#xff1a; 其中Id为自增字段&#xff1a; 代码&#xff1a; 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 using System.Web.UI;6 using System.Web.UI.WebControls;7 us…

click vue 重复调用_VUE防止多次点击,重复请求

VUE防止多次点击&#xff0c;重复请求1.添加自定义文件 preventReClick.jsimport Vue from vueconst preventReClick Vue.directive(preventReClick, {inserted: function (el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabled truesetTimeou…