快速业务通道

ASP.NET页的客户端

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
果找到匹配项,将调用该按钮控件以运行与它的 Click 事件关联的任何代码。更准确地说, 页类将检查并确定所匹配的按钮控件是否实现了 IPostBackEventHandler 接口。如果是,它将调用该接 口的 RaisePostbackEvent 方法。对于按钮控件,该方法将引发服务器端的 Click 事件。

到此为止,一切顺利。但如果页面中包含 LinkButton 控件,情况会怎么样?图 5 显示的 ASP.NET 页的标记与图 1 中的页相同,只不过使用的是 LinkButton 而不是 Submit 按钮。可以看到,标记包括 另外两个隐藏字段(__EVENTTARGET 和 __EVENTARGUMENT)和一些 JavaScript 代码。链接按钮的 href 目标绑定到 __doPostback 脚本函数,这意味着一旦检测到客户端上有点击该元素的操作,就将调用这个 函数。通过生成 LinkButton 控件的代码,__doPostback 函数在页中发出。它用合适的信息填充 __EVENTTARGET 和 __EVENTARGUMENT 字段,然后通过脚本触发回发。这种情况下,HTTP 回发请求的正文 只包含页中的输入域,并且所回发的数据不引用 Submit 按钮。

Figure 5 使用 LinkButton 控件的 HTML 标记

<!DOCTYPE html PUBLIC "

-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html  >
<head><title>Test page</title></head>
<body>
  <form name="form1" method="post" action="LinkBtn.aspx" 

id="form1">
    <div>
      <input type="hidden" name="__EVENTTARGET"
        id="__EVENTTARGET" value="" />
      <input type="hidden" name="__EVENTARGUMENT"
        id="__EVENTARGUMENT" value="" />
      <input type="hidden" name="__VIEWSTATE" 

id="__VIEWSTATE"
        value="/wEP ... Eag==" />
    </div>
    <script type="text/javascript">
    <!--
      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>
    <div>
      <input name="TextBox1" type="text" value="" 

id="TextBox1" />
      <a id="LinkButton1"
        href="http://javascript:__doPostBack(''LinkButton1'','''')">Click 

me</a>
      <hr />
      <h1></h1>
    </div>
    <div>
      <input type="hidden" name="__EVENTVALIDATION" id=
         "__EVENTVALIDATION"
        value="/wEW ... JbJ" />
    </div>
  </form>
</body>
</html>

ASP.NET 如何识别负责处理回发的控件?如果在请求正文中引用的所有控件都未实现 IPostBackEventHandler 接口,则页类将查找 __EVENTTARGET 隐藏字段(如果有)。字段的内容假定为 导致回发的控件的 ID。如果此控件实现了 IPostBackEventHandler 接口

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号