快速业务通道

庖丁解牛Asp.net3.5控件和组件开发技术系列—事件和数据回发机制(一)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
自动提交功能,就可以使用 GetPostBackEventReference方法返回Button控件的客户端回发事件脚本,代码如下所示:

string strPostBackCode =
this.Page.ClientScript.GetPostBackEventReference(button1,”edit”);

然后把Button的客户事件与生成的回发事件脚本进行关联:

this.button1.Attributes[“onclick”] = strPostBackCode;

其他服务端控件也是这样设置的。

5.2.2.3 使用方法GetPostBackClientHyperlink得到回发脚本

这种方式的原理与GetPostBackEventReference类似。该方法的功能是获取一个脚本引用,与前者有一点区别是在其开头附加一个 javascript: 前缀,该前缀属于JavaScript基本语法,常用来在非脚本语言(如HTML)源代码中告诉浏览器该前缀后面的格式串作为JavaScript脚本语言来解析,如:javascript:alert(''hello'')即表示弹出一个"hello"对话框。该引用可在客户端事件中回发到指定控件的服务器,回发时使用指定的事件参数和一个布尔值指示是否为事件验证注册该回发。方法体结构如下:

GetPostBackClientHyperlink(Control, String, Boolean)

跟GetPostBackEventReference相同,第一个参数为事件目标对象;第二个参数为可选参数;第三个参数表示是否为验证注册回发事件。

下面看一个应用示例,代码如下:

string href = Page.ClientScript.GetPostBackClientHyperlink(this, "");
output.AddAttribute(HtmlTextWriterAttribute.Href, href);
output.RenderBeginTag(HtmlTextWriterTag.A);
output.Write("[使用Page.ClientScript对象的GetPostBackClientHyperlink方法]");
output.RenderEndTag();

与前面不同,这里是输出一个HTML的<a>标签。相信读者已经猜到 GetPostBackClientHyperlink的应用场景了(通过方法名***Hyperlink就能够看得出它是专为哪个控件使用的功能)。直接看一下最终生成的客户端的HTML源代码:

<a href="javascript:__doPostBack(''PostBackFromClientControl1'','''')">[使用Page.ClientScript对象的GetPostBackClientHyperlink方法]</a>
<div>
   <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
   <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
</div>
<script type="text/javascript">
   //<![CDATA[
   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>

从上面代码可以看到,除了这句:

href="javascript:__doPostBack(''PostBackFromClientControl1'','''')"

链接触发方式与前面Button控件的onclick触发方式有些不同外,其他的代码完全正确一样。

另外,ASP.NET会自动处理可重用部分代码,比如当页面中有多个可提交元素时,处理页面提交的公共方法_doPostBack在当前页面中总是生成一个,不会生成冗余。

关于GetPostBackClientHyperlink方法的使用就讲这么多。本节主要讲几种常用HTML标签的调用客户端回发的方式以及客户端回发的原理。注

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号