广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Asp.Net的控件如何与Server交互

    2018-04-06 10:41:30 次阅读 稿源:互联网
    广告

      以前写asp的程序的时候,知道只有type设置为submit的按钮,才能触发表单提交数据给服务器端。
      如:Asp.Net中的Button就是等于<input type="submit">.
      但是现在Asp.Net的好多控件都可以任意的和服务器端交互,如:LinkButton.
      这是怎么实现的呢?
      难道是一种全新的方式吗?
      其实,这只是微软的一种变通的方式。
      我们先来看看客户端的代码是如何的.
      我这里是一个带有LinkButton的页面,
      其实LinkButton在客户端就等于html里的A.
      我们来看看LinkButton为什么也能和服务器端交互?
      当我们点击右键查看该页面的源代码时,看到:

      <script type="text/javascript">
      <!--
      var theForm = document.forms['ctl00'];
      if (!theForm) {
          theForm = document.ctl00;
      }
      function __doPostBack(eventTarget, eventArgument) {
          if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
              theForm.__EVENTTARGET.value = eventTarget;
              theForm.__EVENTARGUMENT.value = eventArgument;
              theForm.submit();
          }
      }
      // -->
      </script>

      <a id="simpleLinkButton1" href="javascript:__doPostBack('simpleLinkButton1','')">Click Me</a>
      <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
      <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
      从上面的代码中就可以看出simpleLinkButton1是一个链接,通过客户端代码来提交所在的表单。
      而其中两个隐藏域,则用来交换数据的,就是把__doPostBack的两个参数值赋给这两个隐藏域。
      这就是为什么LinkButton也具有提交数据的最直观的原因。

      那么这上面的代码是怎么生成的呢?
      我们看LinkButton的源代码就可以清楚地知道:
      protected internal override void OnPreRender(EventArgs e)
      {
            base.OnPreRender(e);
            if ((this.Page != null) && this.Enabled)
            {
                  this.Page.RegisterPostBackScript();
                  if ((this.CausesValidation && (this.Page.GetValidators(this.ValidationGroup).Count > 0)) || !string.IsNullOrEmpty(this.PostBackUrl))
                  {
                        this.Page.RegisterWebFormsScript();
                  }
            }
      }

      以上只是把自己在学习工作过程中的一些体会记录如此,防止自己忘记了。
      也望和大家多多交流!

      http://www.cnblogs.com/maplye/archive/2006/08/29/489338.html

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告