ASP.NET Default.aspx文件
创始人
2024-04-25 14:21:14
0

首先大家看到无论在1.1还是2.0中,用VS创建的网站每个aspx文件都对应一个cs文件(或者vb等其它语言).而cs文件里的类一般和文件同名, 如果遇见关键字的情况才会自动使类名前加个'_',例如:_Default.创建的这个cs文件继承自System.Web.UI.Page类,而且只能\必须继承该类.原因就是aspx文件是继承cs文件的.

就拿Default.aspx,Default.aspx.cs文件来说.Default.aspx.cs里包含了类 _Default,继承字System.Web.UI.Page
通过

  1. publicclass_Default:System.Web.UI.Page  
  2. {  
  3. privatevoidPage_Load(objectsender,System.EventArgse)  
  4. {  
  5. //在此处放置用户代码以初始化页面  
  6. }  
  7. }  

就能看得出来.
而ASP.NET Default.aspx文件,虽然没有阐明用的哪个类,但是,实际上已经继承自_Default类.

  1. <%@Pagelanguage="c#"Codebehind="Default.aspx.cs"AutoEventWireup=
    "false"Inherits="MyTest._Default"%> 
  2. > 
  3.  
  4.  
  5. </FONT></STRONG>Default<STRONG><FONT color=#006699> 
  6. <metanamemetaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1"> 
  7. <metanamemetaname="CODE_LANGUAGE"Content="C#"> 
  8. <metanamemetaname="vs_defaultClientScript"content="JavaScript"> 
  9. <metanamemetaname="vs_targetSchema"content=
    "http://schemas.microsoft.com/intellisense/ie5"> 
  10.  
  11. <bodyMS_POSITIONINGbodyMS_POSITIONING="GridLayout"> 
  12. <formidformid="Form1"method="post"runat="server"> 
  13. <FONTfaceFONTface="宋体"> 
  14.  
  15.  
  16.  

以上代码***句话***Inherits="MyTest._Default"就表明了这点.这个文件我是以VS2003建立的,也就是 ASP.NET1.1,MyTest是我用的命名空间。

类的运行机制

说了这么多,实际上我们还是没有说到System.Web.HttpContext类。但是我们现在说的东西对于System.Web.HttpContext类运用很有帮助。

我们访问了Default.aspx,那么是只访问ASP.NET Default.aspx文件,或者该类么?答案当然不是。ASP.NET中当子类被请求时,会先实例化父类。先建立父类的字段,然后是构造函数。

  1. publicclass_Default:System.Web.UI.Page  
  2. {  
  3. privatevoidPage_Load(objectsender,System.EventArgse)  
  4. {  
  5. //在此处放置用户代码以初始化页面  
  6. }  
  7.  
  8. Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码  
  9. overrideprotectedvoidOnInit(EventArgse)  
  10. {  
  11. //  
  12. //CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。  
  13. //  
  14. InitializeComponent();  
  15. base.OnInit(e);  
  16. }  
  17.  
  18. /**//// 
  19. ///设计器支持所需的方法-不要使用代码编辑器修改  
  20. ///此方法的内容。  
  21. ///
  22.  
  23. privatevoidInitializeComponent()  
  24. {  
  25. this.Load+=newSystem.EventHandler(this.Page_Load);  
  26.  
  27. }  
  28. #endregion  

从上面的类中可以看出,该类没有字段,也没有构造函数。实例化它又得先实例化System.Web.UI.Page类。 System.Web.UI.Page类不是本文要讨论的。在实例化_Default类的时候首先执行的是OnInit方法。它重写了 System.Web.UI.Page.OnInit。然后调用InitializeComponent方法,而InitializeComponent 方法又调用了Load事件,执行了Page_Load方法。

在Page_Load方法被执行之前,System.Web.UI.Page类的很多对象是不能使用的,比如:Application,Session等。

System.Web.HttpContext类Current属性的运用

终于说到本文的重点了,可能这部分也不会说很多,但是上面说的确实是为这里服务的。也不多说了,太长的文章一般没人看,何况我写的比较肤浅,并且不够精彩。

Application可以这样使用:

  1. usingSystem;  
  2. usingSystem.Web;  
  3.  
  4. namespaceMyTest  
  5. {  
  6. /**//// 
  7. ///MyTest的摘要说明。  
  8. ///
  9.  
  10. publicclassMPage:System.Web.UI.Page  
  11. {  
  12. publicMPage()  
  13. {  
  14. //  
  15. //TODO:在此处添加构造函数逻辑  
  16. //  
  17. try  
  18. {  
  19. if(HttpContext.Current.Application.Count<1)  
  20. HttpContext.Current.Application.Add("Title","我的网站");  
  21. //在Application没有被创建的时候执行  
  22. }  
  23. catch  
  24. {  
  25. HttpContext.Current.Response.Redirect("Err.Htm",true);  
  26. //出现错误,跳转到错误页面  
  27. }  
  28. }  
  29.  
  30. publicstringMy_Title  
  31. {  
  32. get  
  33. {  
  34. returnApplication["Title"].ToString();  
  35. }  
  36. }  
  37. }  

Default.aspx.cs继承

  1. usingSystem;  
  2. usingSystem.Collections;  
  3. usingSystem.ComponentModel;  
  4. usingSystem.Data;  
  5. usingSystem.Drawing;  
  6. usingSystem.Web;  
  7. usingSystem.Web.SessionState;  
  8. usingSystem.Web.UI;  
  9. usingSystem.Web.UI.WebControls;  
  10. usingSystem.Web.UI.HtmlControls;  
  11.  
  12. namespaceMyTest  
  13. {  
  14. /**//// 
  15. ///_Default的摘要说明。  
  16. ///
  17.  
  18. publicclass_Default:MPage  
  19. {  
  20. privatevoidPage_Load(objectsender,System.EventArgse)  
  21. {  
  22. //在此处放置用户代码以初始化页面  
  23. }  
  24.  
  25. Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码  
  26. overrideprotectedvoidOnInit(EventArgse)  
  27. {  
  28. //  
  29. //CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。  
  30. //  
  31. InitializeComponent();  
  32. base.OnInit(e);  
  33. }  
  34.  
  35. /**//// 
  36. ///设计器支持所需的方法-不要使用代码编辑器修改  
  37. ///此方法的内容。  
  38. ///
  39.  
  40. privatevoidInitializeComponent()  
  41. {  
  42. this.Load+=newSystem.EventHandler(this.Page_Load);  
  43.  
  44. }  
  45. #endregion  
  46. }  

ASP.NET Default.aspx文件使用

  1. <%@Pagelanguage="c#"Codebehind="Default.aspx.cs"AutoEventWireup=
    "false"Inherits="MyTest._Default"%> 
  2. > 
  3.  
  4.  
  5. <</FONT></STRONG>%=My_Title%<STRONG><FONT color=#006699>> 
  6. <metanamemetaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1"> 
  7. <metanamemetaname="CODE_LANGUAGE"Content="C#"> 
  8. <metanamemetaname="vs_defaultClientScript"content="JavaScript"> 
  9. <metanamemetaname="vs_targetSchema"content=
    "http://schemas.microsoft.com/intellisense/ie5"> 
  10.  
  11. <bodyMS_POSITIONINGbodyMS_POSITIONING="GridLayout"> 
  12. <formidformid="Form1"method="post"runat="server"> 
  13. <FONTfaceFONTface="宋体"> 
  14.  
  15.  
  16.  

【编辑推荐】

  1. ASP.NET开发技巧之Theme功能浅析
  2. 详解ASP.NET动态编译
  3. Apache支持ASP.NET方法浅析
  4. 浅谈ASP.NET服务器标准控件
  5. ASP.NET中SQL Server数据库备份恢复浅析

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...