ASP.NET Default.aspx文件

开发 后端
本文介绍ASP.NET Default.aspx文件,无论在1.1还是2.0中,用VS创建的网站每个aspx文件都对应一个cs文件,而cs文件里的类一般和文件同名。

首先大家看到无论在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. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"> 
  3. <HTML> 
  4. <HEAD> 
  5. <title>Default</title> 
  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. </HEAD> 
  11. <bodyMS_POSITIONINGbodyMS_POSITIONING="GridLayout"> 
  12. <formidformid="Form1"method="post"runat="server"> 
  13. <FONTfaceFONTface="宋体"></FONT> 
  14. </form> 
  15. </body> 
  16. </HTML> 

以上代码***句话***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. /**////<summary> 
  19. ///设计器支持所需的方法-不要使用代码编辑器修改  
  20. ///此方法的内容。  
  21. ///</summary> 
  22. privatevoidInitializeComponent()  
  23. {  
  24. this.Load+=newSystem.EventHandler(this.Page_Load);  
  25.  
  26. }  
  27. #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. /**////<summary> 
  7. ///MyTest的摘要说明。  
  8. ///</summary> 
  9. publicclassMPage:System.Web.UI.Page  
  10. {  
  11. publicMPage()  
  12. {  
  13. //  
  14. //TODO:在此处添加构造函数逻辑  
  15. //  
  16. try  
  17. {  
  18. if(HttpContext.Current.Application.Count<1)  
  19. HttpContext.Current.Application.Add("Title","我的网站");  
  20. //在Application没有被创建的时候执行  
  21. }  
  22. catch  
  23. {  
  24. HttpContext.Current.Response.Redirect("Err.Htm",true);  
  25. //出现错误,跳转到错误页面  
  26. }  
  27. }  
  28.  
  29. publicstringMy_Title  
  30. {  
  31. get  
  32. {  
  33. returnApplication["Title"].ToString();  
  34. }  
  35. }  
  36. }  

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. /**////<summary> 
  15. ///_Default的摘要说明。  
  16. ///</summary> 
  17. publicclass_Default:MPage  
  18. {  
  19. privatevoidPage_Load(objectsender,System.EventArgse)  
  20. {  
  21. //在此处放置用户代码以初始化页面  
  22. }  
  23.  
  24. Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码  
  25. overrideprotectedvoidOnInit(EventArgse)  
  26. {  
  27. //  
  28. //CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。  
  29. //  
  30. InitializeComponent();  
  31. base.OnInit(e);  
  32. }  
  33.  
  34. /**////<summary> 
  35. ///设计器支持所需的方法-不要使用代码编辑器修改  
  36. ///此方法的内容。  
  37. ///</summary> 
  38. privatevoidInitializeComponent()  
  39. {  
  40. this.Load+=newSystem.EventHandler(this.Page_Load);  
  41.  
  42. }  
  43. #endregion  
  44. }  

ASP.NET Default.aspx文件使用

  1. <%@Pagelanguage="c#"Codebehind="Default.aspx.cs"AutoEventWireup=
    "false"
    Inherits="MyTest._Default"%> 
  2. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"> 
  3. <HTML> 
  4. <HEAD> 
  5. <title><%=My_Title%></title> 
  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. </HEAD> 
  11. <bodyMS_POSITIONINGbodyMS_POSITIONING="GridLayout"> 
  12. <formidformid="Form1"method="post"runat="server"> 
  13. <FONTfaceFONTface="宋体"></FONT> 
  14. </form> 
  15. </body> 
  16. </HTML> 

【编辑推荐】

  1. ASP.NET开发技巧之Theme功能浅析
  2. 详解ASP.NET动态编译
  3. Apache支持ASP.NET方法浅析
  4. 浅谈ASP.NET服务器标准控件
  5. ASP.NET中SQL Server数据库备份恢复浅析
责任编辑:佚名 来源: MSDN
相关推荐

2009-07-27 03:23:00

Default.asp

2009-07-28 15:38:14

aspx文件编译ASP.NET

2009-07-27 15:25:40

aspx页面ASP.NET

2009-10-19 15:14:48

aspx扩展

2009-07-24 16:55:53

添加aspx页面

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-22 17:45:35

ASP.NET教程

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入门教程

2009-07-21 15:38:31

2009-08-10 13:32:15

ASP.NET TimASP.NET组件设计

2009-07-29 17:11:25

ASP.NET ISA

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-03 17:35:07

ASP.NET WebASP.NET编程工具

2009-07-28 09:02:32

asp.net aja

2009-07-22 17:28:07

CSS文件ASP.NET 2.0

2009-07-21 10:05:10

ASP.NET配置文件

2009-07-31 11:45:42

ASP.NET文件下载

2009-07-21 13:01:07

ASP.NET上传文件

2009-07-20 16:09:39

点赞
收藏

51CTO技术栈公众号