基础知识之剖析ASP.NET页面

   最近感到自己的知识真的很薄弱,于是拿起书本开始从基础知识部分开始学起,其实这个想法也来自刁刁对我的学习建议,如果不把基础的知识和基础的原理了解清楚,学习后面的知识相对起来比较困难,现在我现在确实存在这样的问题,一些问题我能够解决,但是如果深追起为什么要这样做的时候,自己也说不清楚个why出来,以前一直很忽略基础方面的知识,从现在开始我必须从头学习。
  做了很多关于ASP.NET的项目,但是从来没有想过这些ASPX页面是怎样执行的。看了剖析ASP.NET页面章节后才有了一些了解,现总结如下:
  在刚刚开始编写ASPX页面时,ASP.NET代码和HTML代码是混合写在一起,还没有现实分离。下面就对这些混合代码进行剖析。
  1.先了解Web页面的工作原理:
   a.编写代码;b.当客户端请求Web页面; c.Web服务器处理Web页面中非Html代码(即ASP.NET代码),并将起转换成Html流; d.浏览器显示web服务器处理后的Html页面。
  了解了Web页面的工作原理,对理解ASP.NET是如何运行会变得简单。
  2.ASP.NET如何运行:
   首先我们运用一些代码说明:
   a. <Script Language=C# runat=Server>
      void Page_Load()
      {
        Respone.Write("First HTML Line<br/>");
        Respone.Write("Second HTML Line<br/>");
        Respone.Write("Third HTML Line<br/>");
      }
      </Script>
      <Html>
      <Head>
      <Title>ASP.NET code Example></Title>
      </Head>
      <Body>
        Line1:First HTML Line<br/>
        Line2:Second HTML Line<br/>
        Line3:Third  HTML Line<br/>
      </Body>
      </Html>
     输出结果为:First HTML Line
                 Second HTML Line
                 Third HTML Line
                 Line1:First HTML Line
                 Line2:Second HTML Line
                 Line3:Third  HTML Line
                
    分析如下:无论<Script runat=Server>标记符放在Html的任何位置,它都是被首先处理。原因是Web服务器首先扫描文件以查看是否有<Script runat=Server>标记符。如果找到一个,它就会被安排首先处理脚本。
换句话说,服务器不注意<Script>标记符相对于页面中其他元素的位置。
    为什么会有这样的输出结果?那是因为服务器首先处理<Script>标记符,而Page_Load()在<Script>标记符中,而ASP.Net代码放在代码块Page_Load()中。ASP.NET载入页面时,它首先会执行Page_Load()中所有代码。

   我们现在再看一个Example,代码如下:
   <Script Language=C# runat=Server>
      void Page_Load()
      {
        Message.Text="The ASP.NET Line";
       }
    <Script>
    <Html>
    <Head>
    <Title>ASP.NET code Example</Title>
    </Head>
    <Body>
      First Html Line<br/>
      <asp:Label id=Message runat=Server/><br/>
      Second Html Line<br/>
    </Body>
    </Html>
    输出结果:First Html Line
              The ASP.NET Line
              Second Html Line
    当开始看到这里时,我也怀疑过这个输出结果,我认为的输出结束顺序是The ASP.NET Line、First Html Line、Second Html Line,那是因为在上面那个Example中,我们了解执行会从<Script>标记符开始,但是仔细想想我的这种想法is wrong,because上面的Example只是说web服务器的执行顺序,但是输出的结果还是会根据Html中设定的Place进行输出,上面Example会有那样的输入结果是因为Html没有输出位置要求,当然先执行的先输出,但是this Example中,Html页面有了一定输出要求,so输出结果才是这样的。
   通过对以上Example的学习,我了解了其工作原理。

原文地址:https://www.cnblogs.com/yuyu/p/386404.html