最近感到自己的知识真的很薄弱,于是拿起书本开始从基础知识部分开始学起,其实这个想法也来自刁刁对我的学习建议,如果不把基础的知识和基础的原理了解清楚,学习后面的知识相对起来比较困难,现在我现在确实存在这样的问题,一些问题我能够解决,但是如果深追起为什么要这样做的时候,自己也说不清楚个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的学习,我了解了其工作原理。