html控件触发服务端事件

 Asp.net 中在客户端触发服务端事件分为两种情况:

一. WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton

这两种按钮最终到客户端的表现形式为: < input name="Submit1" id="Submit1" type="submit" value=”Submit”>,这是Form表单的提交按钮,点击以后会作为参数发送到服务端,参数是这样的: 控件的name属性=控件的value值,对应上面的例子就是:Submit1= Submit。 服务端会根据接收到的控件的name属性的这个key来得知是这个按钮被点击了,从而在服务端触发这个按钮的点击事件。

二. HtmlControls 中的 Type为button的HtmlInputButton 和其它所有的控件事件,比如LinkButton点击,TextBox的Change事件等等:

这些事件在客户端产生后会经过一个统一的机制发送到服务端。

1. 首先asp.net页框架会使用两个Hidden域来存放表示是哪个控件触发的事件,以及事件的参数:

< !—表示触发事件的控件,一般是这个控件的name -->

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

< !—表示触发事件的参数,一般是当某个控件有两个以上的事件时,用来区别是哪个事件 -->

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

2. 服务端会生成一个jscript的方法来处理所有这些事件的发送,这段代码是:

      < script language="javascript">

  < !--

  function __doPostBack(eventTarget, eventArgument) {

  var theform = document.WebForm2;

  theform.__EVENTTARGET.value = eventTarget;

  theform.__EVENTARGUMENT.value = eventArgument;

  theform.submit();

  }

  // -->

  < /script>

3. 每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码: 

 

比如,HtmlControls 中的 Type为button的HtmlInputButton的点击事件

< !—客户端的点击事件调用__doPostBack,eventTarget 参数为'Button2',表示是name为'Button2’控件触发的事件,eventArgument 为空,表示这个Type为button的HtmlInputButton只有一个客户端触发的服务端事件-->

< input language="javascript" onclick="__doPostBack('Button2','')" name="Button2" id="Button2" type="button" value="Button" />

又比如,TextBox控件的Change事件

< !—客户端的onchange事件调用__doPostBack,eventTarget 参数为’TextBox1’,表示是name为’TextBox1’控件触发的事件,而TextBox控件只有一个客户端触发的服务端事件TextChanged,故服务器就会去触发这个TextBox的TextChanged事件->

< input name="TextBox1" type="text" id="TextBox1" onchange="__doPostBack('TextBox1','')" language="javascript" />

4. 客户端触发事件后调用__doPostBack方法,将表示触发的控件源的eventTarget 和事件参数eventArgument分别付给两个隐藏域__EVENTTARGET和__EVENTARGUMENT,然后提交Form,在服务端根据__EVENTTARGET和__EVENTARGUMENT来判断是哪个控件的什么事件触发了。

时间: 2025-01-07 16:17:31

html控件触发服务端事件的相关文章

句柄-js调用自己写的ActiveX控件 在服务端都OK

问题描述 js调用自己写的ActiveX控件 在服务端都OK js调用自己写的ActiveX控件 在服务端都OK 到客户端能安装注册就是找不到句柄 什么情况 在线等 解决方案 那你要看你的activex是否安装正确,已经安装到系统了吗? 这个需要管理员权限. regsvr32.exe 注册 解决方案二: 对的啊 都是成功的 regedit 也能查看到

如何拖动文件到控件触发指定事件?

问题描述 小白一枚,有一个简单的问题想要请教一下,标题的大概的意思是,比如有两个框,文件拖到第一个框上,可以删除该文件,拖到第二个框上可以复制到指定目录,完成拖动到某个控件触发指定事件的操作,请教各位大神如何实现?谢谢! 解决方案 解决方案二:先要搞懂如何捕获文件拖动到控件上的事件.解决方案三: 解决方案四:按2楼所说执行即可解决方案五:该回复于2016-01-04 00:02:46被版主删除

asp.net(C#)中给控件添加客户端js事件的方法_实用技巧

放在服务器端,也可以用ajax来实现,不刷页面.但我觉得有更直接更简单方法,用一个js事件是可以实现的. 但,DropDownList不偈Button等控件提供了一些像"OnClientClick"前台事件,只有服务端事件. 想到,所有C#页面代码,最终都是生成HTML,js事件也是最终运在浏览器中,以Html为基础的.服务端控件最终生成的HTML控件有什么js事件,我们应该就能在aspx中给它添加相应的事件. DropDownList 生成的Htm是元素<Select>是

为asp.net中的Web用户控件添加属性和事件

asp.net|web|控件      在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功.         但是,技术是在不断的发展着,引用某位Net专家的话讲―

在asp.net中为Web用户控件添加属性和事件

asp.net|web|控件 在asp.net中为Web用户控件添加属性和事件 在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功. 但是,技术是在不断的发展着,引

深入理解__doPostBack 客户端调用服务端事件_实用技巧

在我的随笔<Page,你是怎样处理回发事件的?>中曾提出一个疑问,如何得到引起页面PostBack的控件?通过阅读Page类的源码,误打误撞,无意中看到了__EVENTTARGET和__EVENTARGUMENT这两个常量的定义,并通过调试分析页面,知道了通过Request.Form["__EVENTTARGET"]可以获取到触发页面PostBack的事件源(控件的ID).对于一般的控件,这样就可以了,唯有Button和ImageButton触发的PostBack无法通过这

net 地图控件 #-GMAP.NET 相关事件问题?

问题描述 GMAP.NET 相关事件问题? 正在了解GMAP.NET 控件,试了一下,该控件的Marker相关事件可以响应.但是多边形和路径的相关事件没有触发,不知怎么回事,望各位指教!

在线等待答复:如何在程序中关闭某控件的某一事件。

问题描述 如何在程序中关闭某控件的某一事件,也就是说当运行某一个过程的时候,虽然触发条件也具备,但是此时我不希望事件被触发.等这个过程结束了再恢复,该怎麽做?谢谢 解决方案 解决方案二:control.Click-=newEventHandler(ControlClick);//...control.Click+=newEventHandler(ControlClick); 解决方案三:忘了说明,是vb.net下的.离开表格单元会激发Grid1.LeaveCell事件,现在想屏蔽它,之后再打开.

急急急,外面页的按钮怎么调用Web用户控件里的按钮事件

问题描述 我是在Web用户控件里做了一个按钮的事件,但是现在想在Aspx页的按钮事件去触发用户控件里面的按钮的事件,各位大哥,怎么触发?谢谢.想了一上午了. 解决方案 解决方案二:三种情况,一,你直接在用户控件中写执行事件,用户控件拉至页面时,点击按钮,即是用户控件内的按钮;二,你可以把按钮放在页面上.把事件也写在页面上.也可以执行用户控件的程序.三,你也可以在用户控件,写事件委托,在页面实现委托.解决方案三:可以通过JS,外部页面的onclick事件直接去触发控件内的按钮的click,func