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数据库备份恢复浅析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...