当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

浅谈ASP.NET的Postback(2)

  首先我们来看看ASP.NET设计的Page Render到Client端的HTML是什么样子:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>

  Test Page

  </title>

  </head>

  <body>

  <form name="form1" method="post" action="Default.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="/wEPDwUKMTA0NDQ2OTE5OWRk281L4eAk7iZT10hzg+BeOyoUWBQ=" />

  </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>

  <span id="LabelMessage" style="color:Red;"></span>

  </div>

  <div>

  <input type="submit" name="Button1" value="Button1" id="Button1" />

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

  <input type="button" name="Button3" value="Button3" onclick="javascript:__doPostBack('Button3','')" id="Button3" />

  </div>

  </form>

  </body>

  </html>

  上面的HTMLBody部分大体包括3个部分:

  1.   定义了3个hidden field:

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

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

  <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA0NDQ2OTE5OWRk281L4eAk7iZT10hzg+BeOyoUWBQ=" />

  从他们的命名可以看出他们分别代表的意思:__EVENTTARGET代表触发Event的Control的Unique name;__EVENTARGUMENT代表为Event Handler定义的额外的参数;__VIEWSTATE:代表的是Viewstate。

  2.   一段script:

  <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>

  定义了一个__doPostBack function完成Postback的操作,该function只有区区3行代码,前两行通过参数对上面定义的两个hidden field赋值,然后向Server端提交表单。

相关内容
赞助商链接