(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

时间:2021-08-18 07:01:22

原文地址:http://www.cnblogs.com/xuyubing/archive/2013/10/01/3348344.html

  • 前言

  很久很久以前,还是我在学校的时候,我就看了传智里面视频,学习了一下Asp.net页面生命周期,当时看的时候,因为内功不够深厚,看起来很吃力,现在回头温习了一下,还是有点收获的,于是想用博客记录一下,以备自己复习。

  • 演示代码

  先新建了一个空的WebApplication1的工程,然后在里面新建了一个WebForm1的页面,代码页面编码如下

(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server"> <%
for (int i = 0; i < 5; i++)
{
Response.Write(i+Hello()+"</br>");
}
%> <input type="text" id="txtName" runat="server" />
<input type="text" id="txtPwd" />
<%=strHello%>
<% Response.Write(strHello); %> </form>
</body>
</html>
(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.UI.HtmlControls; namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
txtName.Value = "我是通过后台代码修改了名称";
Hello();
Response.Write("<br/>"+GetType().Assembly.Location+"</br>");
}
protected string strHello = "哈哈哈哈。。。我是后台文件类里面的变量";
protected string Hello()
{
return "我是Hello方法。。。";
}
}
}
(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

编写上面的代码,是为了后面的演示,演示以上的代码是如何生成HTML页面代码,并输出到浏览器上的。
Response.Write("<br/>"+GetType().Assembly.Location+"</br>");这行代码是输出此页面编译后生成的临时的程序集,也就是一个临时的页面dll文件。以上代码运行结果如下:
(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

由此我们得到一个输出路径,C:\Users\xuyubing\AppData\Local\Temp\Temporary ASP.NET

Files\root\c250054c\3abf1fff\App_Web_ijt4szh5.dll  
这个路径就是此程序集生成的临时页面dll文件。

接下来我们用反编译工具来看看这个dll里面有什么东西

(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

由此我们可以看出webform1继承了WebForm1类,那么这个WebForm1是哪里来的呢,我们再把此工程下面的bin目录下面的WebApplicatioin1.dll程序集也用工具看一下里面有什么东西

(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

由上图我们可以得出的结论是WebForm1类就是WebApplicatioin.WebForm1.aspx.cs类,那么webform1_aspx类又是什么呢,它是继承WebForm1类的,我们再来看WebForm1.aspx页面的@page指令

<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

Inherits="WebApplication1.WebForm1"表示的是继承WebApplication1.WebForm1类的,再由GetType().Assembly.Location输出本程序集。
得知App_Web_ijt4szh5.dll 这个临时的dll文件其实就是WebForm1.aspx页面,我们都知道.net
dll文件里面装的都是类(由类组成),推出WebForm1.aspx页面其实就是一个类,我们在后面都将XXX.aspx页面统称为页面类,它继承了它的后台代码文件WebForm1.aspx.cs类。

  • 总结

  xxx.aspx页面其实也是一个类,它继承了它的后台代码文件xxx.aspx.cs类。

  • 解决的疑问  

  1.我们可以在.aspx页面中编写C#代码的根本原因是它本来就是一个类,它可以调用后台非私有的变量与方法,因为继承关系。

  2.页面分离问题。相信大家有时候可以看到,只有.aspx页面,找不到.aspx.cs文件,那是因为他们把后台文件类给分离封装了。

<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1"
%>

只要指定CodeBehind
属性和Inheits属性就可以实现页面分离效果了,百度一下,你就知道。

  3.后台文件类可以调用页面类的控件,如txtName.Value =
"我是通过后台代码修改了名称";那是因为凡是声明为runat="server"的控件都在后台页面类中声明了变量,下图可以看到txtName文本框被声明在后台了,页面类可以访问txtName是因为继承关系。而txtPwd文本框没有被标记为runat="server",于是没有在后台声明。

(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

 那页面类是如何生成html页面代码的呢?下一篇,我们通过源码演示生成过程,WebForm页面生命周期控件树的生成和作用。

(转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码的更多相关文章

  1. Asp&period;net页面生命周期详解任我行(3)-服务器处理请求详细过程

    前言 百度了一下才知道,传智的邹老师桃李满天下呀,我也是邹老师的粉丝,最开始学习页面生命周期的时候也是看了邹老师的视频. 本人是参考了以下前辈的作品,本文中也参合了本人心得,绝非有意盗版,旨在传播,最 ...

  2. Asp&period;net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM&lowbar;ASPNET控件树的生成和作用

    摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命周期中一个很重要的概念控件树.服务器以反射的方式创建了页面类对象 内容 我 ...

  3. Asp&period;net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

    前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频,学习了一下Asp.net页面生命周期,当时看的时候,因为内功不够深厚,看起来很吃力,现在回头温习了一下,还是有点收获的,于是想用博客记录一 ...

  4. ASP&period;NT运行原理和页面生命周期详解及其应用

    ASP.NT运行原理和页面生命周期详解及其应用 1. 下面是我画的一张关于asp.net运行原理和页面生命周期的一张详解图.如果你对具体不太了解,请参照博客园其他帖子.在这里我主要讲解它的实际应用.  ...

  5. ASP&period;NET生命周期详解

    最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多处理流程,如管道事件等 ...

  6. ASP&period;NET生命周期详解 &lbrack;转&rsqb;

    最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多处理流程,如管道事件等 ...

  7. ASP&period;NET生命周期详解(转)

    看到好文章需要分享. 最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多 ...

  8. React—组件生命周期详解

    React—组件生命周期详解 转自 明明的博客  http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢 ...

  9. 【转】Java 类的生命周期详解

    一. 引 言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大 ...

随机推荐

  1. 学习Hadoop整体理解

    HDFS是Hadoop的核心模块之一,围绕HDFS是什么.HDFS的设计思想和HDFS的体系结构三方面来介绍. Hadoop的设计思想受到Google公司的GFS设计思想的启示,基于一种开源的理念实现 ...

  2. eclipse指定启动的jdk

    原文:http://my.oschina.net/noday/blog/203987 到eclipse目录,打开eclipse.ini文件,在指定位置加入你的jdk相关文件(如下面示例配置中-vm配置 ...

  3. Java parseInt&lowbar;使用此方法得到的原始数据类型的一个特定的字符串

    Java parseInt解释加方法示例     使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个         java parseInt ...

  4. BZOJ&lowbar;1609&lowbar;&lbrack;Usaco2008&lowbar;Feb&rsqb;&lowbar;Eating&lowbar;Together&lowbar;麻烦的聚餐&lowbar;&lpar;动态规划&comma;LIS&rpar;

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1609 给出一串由1,2,3组成的数,求最少需要改动多少个数,使其成为不降或不升序列. 分析 法 ...

  5. 【动态规划】Vijos P1011 清帝之惑之顺治

    题目链接: https://vijos.org/p/1011 题目大意: 给一张N*M的地图(N,M<=500),可从任一点开始沿上下左右走,只能走比当前低的地方.问最长能走多少格. 题目思路: ...

  6. &lbrack;Go&rsqb; golang原子函数锁住共享资源

    1.atomic包里的几个函数以及sync包里的mutex类型,提供了解决方案2.原子函数能够以很底层的加锁机制来同步访问整型变量和指针3.atomic.AddInt64(&counter, ...

  7. Asp&period;net core Identity &plus; identity server &plus; angular 学习笔记 &lpar;第一篇&rpar;

    用了很长一段时间了, 但是一直没有做过任何笔记,感觉 identity 太多东西要写了, 提不起劲. 但是时间一久很多东西都记不清了. 还是写一轮吧. 加深记忆. 这是 0-1 的笔记, 会写好多篇. ...

  8. ubantu搭建oj——第一天(6&period;11)

    oj第一份作业: 按照DMOJ的文档将代码搬运到ubantu上 sudo apt install git gcc g++ make python-dev libxml2-dev libxslt1-de ...

  9. javascript&colon;location&period;reload&lpar;&rpar;和location&period;replace&lpar;&rpar;的区别,及对图片缓存的影响。

    有段时间没有清理IE的临时文件(缓存文件),在我清理的时候,我突然发现一个问题. 我打开的一个网站,图片默认缓存一个月的,但我发现,当我上传图片或删除图片之后,图片重新缓存,也就意味着,在我上传新图片 ...

  10. 阿里云oss服务通用类

    在webconfig中配置信息 <?xml version="1.0" encoding="utf-8"?><configuration&gt ...