.aspx(或.asp)文件与.html(.htm)文件的区别与联系

 

由于都是用于描述网页文档的文件,自学asp.net起就对两者之间的关系很好奇

主要的区别在于,当用户请求页面时,它们在服务器的端的处理不同

下图解释客户端请求页面时,服务器端的处理流程:

 

.html文件

Ø  .html文件是基于HTML的静态网页,它的内容是固定不变的。其页面内容使用的仅仅是标准的HTML代码,最多再加上流行的gif、flash等格式的动态图片,还有产生动态的字幕等动画效果。

Ø  当客户机通过IE浏览器向Web服务器请求提供网页内容时,服务器仅仅是将已经设计好的静态HTML文档传送给用户浏览器。

.aspx文件

.aspx是ASP.NET 页面的扩展名。它无非是在静态HTML网页里面嵌入了动态的指令(这些动态指令是由各种脚本语言编写的,是由IIS服务器上的脚本引擎来执行的)而已。如果浏览器请求某张 ASP.NET 页面,那么在把结果发回浏览器之前,服务器首先会处理页面中的可执行代码(即,脚本语言代码 )。

也就是说,一个asp网页主要包含两个部分:

        ⑴ HTML静态网页要素:由IE浏览器解释执行

        ⑵ asp脚本命令:由IIS脚本引擎解释执行

 

对比1

 

我们分别在html页和aspx页插入脚本语言,对比运行效果

Html测试:

 

 

  

Aspx测试:

 

 

  

说明:

静态HTML语言的要素定义的是数据如何显示,而不能如何动态生成数据,所以单纯使用HTML制作的网页就是静态的。

 

对比2

在浏览器端对应的页面,右击—>查看源码(下面称客户端源码),我们对比客户端源码与服务器端程序员编写的源码(下面称服务器端源码)是否一致

 

Html测试:

 

  

Aspx测试:

  

 

说明:

      Web服务器并未对静态的html页做任何处理就直接发送给所请求的浏览器,然后由浏览器端的解释器进行内容解释并显示结果。其实,对于静态网站(由静态的HTML网页构成的网站)而言,Web服务器确实不是必需的。在这里Web服务器不过充当了一个静态网页的组织者的角色而已。

      

总结:

1.     尽管asp网页和静态网页一样都是文本文件,但是IIS只有看到后缀名为asp的文件才会认为是asp动态网页,才会交给脚本引擎执行。

2.     可以看到静态网页可以以asp为扩展名,但不赞成这样,因为扩展名一改,其后台的执行机制就会发生改变,会导致服务器性能下降。

3.     IIS发现是以aspx(或asp)为扩展名的网页就会交给脚本引擎去识别和执行。脚本引擎逐行判断网页代码是动态的还是静态的。如果是静态的就直接反馈给IE浏览器;如果是动态的aspx(或asp)代码则按照要求生成结果,并将结果插入到网页中的相关位置上,最后反馈给IE浏览器。

4.     asp中包含一个asp.dll文件,默认安装在系统目录winnt\system32\inetsrv\下。

5.     该文件是一个动态链接库,其作用就是对后缀名为asp的网页文件进行分析,判断其中是否有asp动态脚本代码。如果有则将代码送往相应的脚本引擎执行;如果是静态的HTML代码,则直接反馈给IE浏览器。

 

6.     在一般情况下不需要,因为IIS中已经内嵌有VBScript和JavaScript的脚本引擎。如果需要开发其他类型的脚本命令的网页,就需要安装相应的脚本引擎

ASP.NET 中,GridView 控件的列可以在 aspx 页面中定义,也可以在 aspx.cs 文件中动态添加。如果您想在 aspx.cs 文件中添加 GridView 的列,可以通过以下代码实现: ```csharp protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // 创建 GridView 的模板列 TemplateField tf = new TemplateField(); tf.HeaderText = "自定义列"; tf.ItemTemplate = new GridViewTemplate(ListItemType.Item, "自定义列名称"); // 将列添加到 GridView 中 GridView1.Columns.Add(tf); } } // 自定义 GridView 模板列的实现 public class GridViewTemplate : ITemplate { private ListItemType _templateType; private string _columnName; public GridViewTemplate(ListItemType type, string columnName) { _templateType = type; _columnName = columnName; } public void InstantiateIn(Control container) { switch (_templateType) { case ListItemType.Item: // 在 ItemTemplate 中添加控件 Label lbl = new Label(); lbl.ID = "lbl" + _columnName; container.Controls.Add(lbl); break; case ListItemType.EditItem: // 在 EditItemTemplate 中添加控件 TextBox txt = new TextBox(); txt.ID = "txt" + _columnName; container.Controls.Add(txt); break; case ListItemType.Header: // 在 HeaderTemplate 中添加控件 Label headerLbl = new Label(); headerLbl.Text = _columnName; container.Controls.Add(headerLbl); break; } } } ``` 在上述代码中,我们首先在 Page_Load 事件中创建了一个 TemplateField 对象,然后设置了该列的 HeaderText 和 ItemTemplate。这里的 ItemTemplate 是通过一个自定义的 GridViewTemplate 类实现的,该类实现了 ITemplate 接口,根据 ListItemType 的不同来实现不同的模板。最后,我们将创建的列添加到 GridView 控件的 Columns 集合中即可。
评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值