• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > asp.net服务器端指令include的使用及优势介绍

asp.net服务器端指令include的使用及优势介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了微型asp.net服务器,架设asp.net服务器,迷你asp.net服务器,asp.net,asp net培训等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

      asp.net中的服务端包括指令简单点就是一个<!-- #include file|virtual="filename" –>这样的指令,msdn中的名词解释是:将指定文件的内容插入 ASP.NET 文件中,包括网页(.aspx 文件)、用户控件文件(.ascx 文件)和 Global.asax 文件。插入静态文件这个基本功能就不说了,插入aspx、ascx,这功能算是挺强了,asax哥就有点困惑了,这个暂且不管,今天要说的就是这个指令。

尴尬的存在
     服务器端包括指令在web的开发技术中肯定是个标配了。asp.net前身asp中就已经有了这个指令,做为唯一一个引用外部文件的指令,入门的开发人员都应该使用过;php中的include、require,几乎用滥了,曾经使用过一段php,这指令常用的不能再常用了;jsp没过开发经验,搜索了下,也有这个include指令,使用情况应该也很平常。但是asp.net中的include几乎是在被遗忘的角落里,读过的asp.net的书里,很少会提到它。因此,对于没有asp开发经验直接学习asp.net的来说,可能要本不知道它的存在。为什么??

     造成尴尬存在原因之一,就是webform中最重要的功能之一:用户控件。为什么要使用include,是因为被引用的内容会在很多地方被使用到--重用,例如页头、页脚、网站功能块。而恰恰用户控件就是为此而生,它天生可重用的特性,及强大的控件事件流程,就如MSDN中所说:
     “尽管您仍然可以使用 #include 标记(通过将公共服务器端代码、控件或 HTML 标记放入要包括在其他网页中的文件内)以实现代码重用,ASP.NET 常用的首选方法是使用 Web 用户控件。用户控件提供了一个面向对象的编程模型,并且提供了比服务器端包含文件更多的功能。”
微软都不待见它了,紧接着,include也被开发人员打入冷宫,但是,请不要忘记,它存在。

include详解
       说是详解,其实不打算在这里详解,请参见:服务器端包括指令语法。语法、用法、示例什么的,这里也不说,大家自己去看或自己试验吧。

include优势
       说到优势,肯定要有个比较的对象了,对了,这个对象就是用户控件。用户控件是啥玩意,不解释。

优势之一:静态文件的重用。

用户控件功能强大,但是即使是简单如静态内容以用户控件的形式实现,它也必须经历用户控件的生命周期,相比性能就差了。

你可能会说,现如今网站又有多少还能是纯静态的内容呢,譬如页脚,那些项肯定也是网站CMS后台管理的,怎么可能以静态文件的形式存在,只能使用用户控件,并且给用户控件加上outputcache,这样即保证了灵活性,性能也能有保证,这样才是最完美的。

不错,第一,不同的项目不同的需求,肯定有些时候就是会引用静态内容,这时要保证使用这些静态内容以静态的形式存在,不要放到用户控件里。第二,网站的优化,无论何时,总有一种观点,就是静态化,例如上边的页脚,我们可以通过生成一个静态的页脚文件,当CMS对这些项有修改时,重新生成这个文件,然后通过include方式引用,相对于缓存的不可预测性和一定的不可控性,优势比用户控件还要灵活,并且性能更好。第三,协作,就是对于比较大型的网站,页面某些控件,但是这些数据是其它团队负责的,而一些相对稳定的内容或者对变化不太敏感的内容,生成静态文件之后自动分发,而对于这些文件的引用也是很常见的。

其实这个也可能是唯一的include的优势了。

优势之二,可穿透的封装。

可重用的东西一般都是封装的。用户控件是一个独立的个体,它寄宿于页面,但本身却像是页面上一个自由王国,碰到王国内部的处理,页面会把处理权交给控件自己的去处理,例如页面page_load加载时,碰到控件只能调用控件提供的load处理方法,这就是控件的封装,只有自身愿意公开的属性和方法才能被页面访问,这是标准的封装,这也是由asp.net的页面生命周期决定的。因此,如果控件要使用寄宿页面的一个变量,那么它应该公开一个属性,然后由页面在代码里主动给它赋值。

同样的,不同的机制决定了不同的行为。从MSDN中:

赋予 File 或 Virtual 特性的值必须用引号 ("") 括起来。在执行任何动态代码之前处理被包含的文件。

重要的一句,在执行任何动态代码之前处理被包含的文件。这句话什么意思??

一层意思就是说被包含文件在被处理之后内容才会加入到页面中,动态代码执行时,执行的代码根本就区分不出来这块内容是引用的还是自己本来就有的,也就是说我们可以用来重用的静态文件里加入<% 代码 %> 或者<%= 页面变量 %> 这样的代码,它们会被页面处理为相应的内容。这就是我所谓的“可穿透的封装”。这种方法当然比控件公开属性,页面主动赋值要更灵活。

二层意思如果引用的aspx或ascx,那么会在引用的动态内容执行输出之后,页面代码才会执行,这样就不如用户控件调用将流程在页面内好了,尽量不要使用include引用动态页面。

因此我们应只用include引用静态文件,但是静态文件里可以包含服务端标记代码。

      知无不言,但怎奈能力有限,词不达意,就当抛砖引玉吧。大家尽量看,不过可以肯定的是可以以静态文件存在的重用就用include吧。可能还会有其它更适合的使用场景和更多的优势,还请有充分经验的补充。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
  • ASP.NET实现从服务器下载文件问题处理
  • asp.net实现服务器文件下载到本地的方法
  • asp.net上传图片到服务器方法详解
  • asp.net保存网上图片到服务器的实例
  • asp.net保存网上图片到服务器的实例
  • asp.net检查服务器上目录或文件是否存在的方法
  • asp.net获取服务器基本信息的方法代码
  • asp.net服务器端指令include的使用及优势介绍
  • ASP.NET将文件写到另一服务器(图文教程)及注意事项

相关文章

  • 2017-05-11在ASP.NET 2.0中操作数据之五十二:使用FileUpload上传文件
  • 2017-05-11Global.asax取物理路径/取绝对路径具体方法
  • 2017-05-11读写xml所有节点个人小结 和 读取xml节点的数据总结
  • 2017-05-11禁用aspx页面的客户端缓存(防止页面被修改)
  • 2017-05-11asp.net String.format中大括号的加入方法
  • 2017-05-11asp.net中url字符串编码乱码的原因与解决方法
  • 2017-05-11一步步打造漂亮的新闻列表(无刷新分页、内容预览)第一步
  • 2017-05-11.Net Core 下使用ZKWeb.System.Drawing实现验证码功能(图形验证码)
  • 2018-08-20Asp.net mvc验证用户登录之Forms实现详解
  • 2017-05-11解析asp.net的分页控件

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net 将设有过期策略的项添加到缓存中
    • asp.net ToString()格式设置大全
    • 值类型和引用类型的区别深入理解
    • 一个基于Asp.Net MVC的权限方案
    • ASP.NET简单实现注销功能
    • ASP.NET登录注册页面实现
    • 12小时制和24小时制获取当天零点的问题探讨
    • asp.net DataGridView导出到Excel的三个方法[亲测]
    • ASPX中的用户控件与ASP中的INCLUDE方法对比
    • asp.net下UTF-7转GB2312编码的代码(中文)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有