aspx与aspx.cs的关系

简介:
在vs中,有很多朋友问起,在一个网站项目中的 aspx aspx.cs 文件的关系,现在就归纳如下:
可以把 aspx 文件分成三部分:
run=”server” 属性的标签
<% %>
标准 HTML 标签
再算上 aspx.cs ,一共是四块,我们分别来说他们的关系。
(图一)
 
我们来做个例子,结合上面的例子来看一下吧。
我们新建一个网站,页面如下:
<% @  Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<! 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">
    <div>
        <asp:Button ID="But_Yes" runat="server" Text="Button" />
       
        <% int i = 10;
           this.k = i;
             %>
    </div>
    </form>
</ body >
</ html >
后参代码如下:
using  System;
using  System.Configuration;
using  System.Data;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.HtmlControls;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
 
public  partial class _Default : System.Web.UI.Page
{
    int j = 10;          // 私用成员
    protected int k=100; // 保护成员
    protected void Page_Load(object sender, EventArgs e)
    {
        But_Yes.Text = " 确定" ;
}
}
对这个例子我们来分析一下。
首先,我们要发布这个,会看到发布的文件有如下图所示:
 
(图二)
 
(图三)
我们主要看 Default.aspx bin 中的这个 dll ,现在我们用反身工具 Red Gate’s .NET Reflector 来查看这个 dll 文件,发现在这个文件中,只有一个类 _Defaule ,如下图:
 
 
(图四)
 
好,我们已经把知识都准备好了,接下来分析图一。
按照图一的说法,编译成 dll 后,这个 _Default 这个类中应该有包括 aspx.cs 文件中的和 aspx 中有 run=”server” 属性的标签,当然,在类中就成为一个字段,并且是控件类型的字段了。我们在图四中可以看出,在 aspx.cs 中的 j k aspx 中的 form1 表单和 But_Yes 按钮都可以看到,但看不到 <%%> 中的 i aspx.cs aspx 中有 run=”server” 属性的标签是怎么样编译在一个类中的呢?原因在 aspx.cs 中,类 _Default 前的关键 partial 的功劳,我们都知道,这是一个分部类的关键字,就是可以把一个类分成两块来写,或分到两个文件中去写, aspx.cs 是一部分,另一部分呢?另一部分就是在 aspx 中用 run=”server” 属性的签标,这些标签成为 _Default 类的一个字段,所以我们能在 aspx.cs 中能访问到这些标准。
我们接下来再看图一,在有请求到达服务端时,服务端就会把 aspx <%%> 生成一个类,并且这个类是继承 _Default 这个类的,这样也就是说,在 <%%> 中的代码,能访问到 aspx.cs _Default 中的非私有变量,也就是我们访问不到 _Default 类中的 j ,但能访部到该类中的 k
最后, _Default 的子类和 HTML 代码在 IIS CLR 的协作下,生成页面文件发送给客户端。
综上我们可以看出, aspx.cs 文件和服务器端控件生成一个类, <%%> 生成一个类,后面的类是在运行时生成,它是继承前面的类,最后再结合 aspx 文件中的 HTML 生成页面文件发送给客户。
(以上是在 vs2008 测试通过)


















本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/149943 ,如需转载请自行联系原作者
相关文章
|
SQL 关系型数据库 数据库
RDS入门——Excel文件转存到RDS数据库实践
本实验将帮助您快速掌握RDS产品的实例开通,熟悉RDS产品的常用功能与基础操作,完成云上数据库搭建。
|
Linux Windows
uboot配置时ln: failed to create symbolic link ‘asm’
uboot配置时ln: failed to create symbolic link ‘asm’
244 2
|
存储 监控 网络协议
Java网络编程:文件下载详解
文件下载是网络应用程序中的一个常见任务,允许用户从远程服务器获取文件。Java提供了丰富的网络编程库,使文件下载变得相对简单。本文将详细介绍如何使用Java进行文件下载,并提供一些相关内容的解释。
327 0
|
10月前
|
运维 文字识别 Serverless
Serverless 应用引擎产品使用之在阿里云函数计算中,需要处理的文件大于100MB如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
615 5
|
10月前
|
数据采集 编解码 图形学
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
430 0
|
10月前
|
Linux
Linux日志自动清理方案
Linux日志自动清理方案
281 0
|
机器学习/深度学习 弹性计算 关系型数据库
邀请好友免费试用云产品,咖啡券、咖啡杯、定制T恤等你来领
4月11日阿里云峰会以来,阿里云推出“飞天免费试用计划”,面向国内1000万云上开发者,提供包括云服务器ECS、函数计算FC、数据库PolarDB、机器学习PAI等在内 80多款云产品的免费试用,支持1-12月不等的试用时长。
|
存储 编解码
[oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
[oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
124 0
[oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
|
机器学习/深度学习 安全 测试技术
阿里云EMAS专家测试手机APP测试Android和iOS上百款机型
阿里云EMAS专家测试服务覆盖Android和iOS上百种手机型号,日活过亿规模手机APP经验的阿里云EMAS测试专家,48小时输出详细测试报告,包括功能测试、性能测试、UI适配测试以及隐私合规检测等。阿里云百科来详细说下阿里云EMAS专家测试服务说明及价格
927 0
阿里云EMAS专家测试手机APP测试Android和iOS上百款机型
|
机器学习/深度学习 编解码 人工智能
Text to image论文精读CogView: Mastering Text-to-Image Generation via Transformers(通过Transformer控制文本生成图像)
CogView是清华大学和阿里巴巴达摩院共同研究开发的一款用Transformer来控制文本生成图像的模型。该论文已被NIPS(Conference and Workshop on Neural Information Processing Systems,计算机人工智能领域A类会议)录用,文章发表于2021年10月。 论文地址:https://arxiv.org/pdf/2105.13290v3.pdf 代码地址:https://github.com/THUDM/CogView 本博客是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。
Text to image论文精读CogView: Mastering Text-to-Image Generation via Transformers(通过Transformer控制文本生成图像)