科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.NET入门随想之明明白白我的心

ASP.NET入门随想之明明白白我的心

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有一群说着同样语言的人,计划修一座高耸入云的高塔直达天庭,以证明族群团结的力量。

作者:老燕 来源:天极开发 2007年11月6日

关键字: Windows

  • 评论
  • 分享微博
  • 分享邮件
用户会对界面做出各种操作,并希望得到系统的回应,这些用户界面的操作被.Net统称为事件(event,系统内部也会产生事件),而对应的系统回应称为事件处理。在《随想四》中的Login页面,当用户点击btnLogin按钮后, btnLogin对象(这时它被称为事件源)大叫:"我被点啦,十年了,我终于第一次被点击啦,555~~~"但Button类本身并未定义相应的事件处理程序,那么又是谁来完成系统的实际响应操作呢?

  在编写Login类时我们已经定义成员btnLogin_Click方法,并希望由此完成btnLogin.click事件的处理,但MS工程师在定义Button类时并不知道其作用,所以需要一个媒介将两者连接起来,这时我们不禁回想起《随想七》中的委托。.net用EventHandler委托作为连接事件源与事件处理程序的媒介,将两者绑定:

// 该段程序为《随想四》中Login.aspx.cs的代码片段并有所修改
// EventHandler为System命名空间中定义的公共委托
// sender为事件源对象,EventArgs类负责收集事件数据
public delegate void EventHandler(object sender,EventArgs e);
// Login为受托类,完成事件处理定义和连结
public class Login : System.Web.UI.Page{
// Login.OnInit 为Page类受保护方法,执行创建和设置实例所需的初始化步骤
// 调用OnInit方法时引发 Init事件
override protected void OnInit(EventArgs e){
// new System.EventHandler生成一委托实例
// += 完成事件处理委托的连接过程,同一事件可以触发多个处理程序,称为多路广播
// base.OnInit(e)用于调用父类的同名方法
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
base.OnInit(e);
}
private void btnLogin_Click(object sender, System.EventArgs e){……}
}

  ■ 苦旅 - ASP.NET的动态模型

  每一个HTTP请求出发前可谓悲壮,壮士一去兮不复返!Login.aspx页面请求将URL和相关数据打包背上,胸前挂着自己的IP地址身份牌,从客户端浏览器出发,翻越电信网通人为制造的各种障碍,爬雪山过草地,步履蹒跚地走到Web服务器的IIS门前,正想狂喜一阵,当看到大门口排着长长的数以万计的请求队列,还常有些饿死骨无人理彩时,它终于倒下了。

  矇眬中Login.aspx页面请求被传送到HttpRuntime实例,HttpRuntime实例将:

  ·获取一个HTTP Application 对象;

  ·让HTTP Application 对象读取配置文件;

  ·由HTTP Module 实例们分别提供会话维护、验证或配置文件维护等各项服务;

  ·HTTP Handler接口实例化具体Page类实现处理。


  Login是HTML页面生产车间的工人,每天他负责按照严格的标准和固定的流程为客户制作HTML编码的Login.aspx页面。一天早上,login正在硬盘里惬意地喝着咖啡,身宽体胖的主管HttpHandler大叔通知他立即开工。

  今天是第一次进入内存,所以他先准备好页面构架和所有控件零件并设置其默认状态;然后严格按OnInit方法完成Init事件;之后会在页面请求中寻找_VIEWSTAT。如果找到就对数据进行读取和解码;并让控件更新其状态以准确反映客户端相应元素状态; 随后他拿出OnLoad方法操作手册来处理Load事件;然后应付一系列被触发的页面事件,如果页面正在被回送,还会包括用户触发的事件;用onPreRender方法处理的PreRender事件可以改变提交页面的方式;然后把当前的页面状态保存到新的视图状态中。

  完成所有操作后即可生成HTML编码文件,期间可通过覆写(override)Render方法以附加一些HTML代码,为页面做最后的修饰。

  最后Login释放所有占用的文件、图形对象、数据库连接等关键资源,匆忙跑出内存,"真是太闷了!"出门时他小声地嘀咕了一声。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章