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 ,如需转载请自行联系原作者
相关文章
|
10月前
|
C++
CS第三方控件
CS第三方控件
57 0
|
Java 应用服务中间件
DreamWeaver CS5 搭建Tomcat服务器 运行Jsp文件
DreamWeaver CS5 搭建Tomcat服务器 运行Jsp文件
264 0
DreamWeaver CS5 搭建Tomcat服务器 运行Jsp文件
|
.NET Windows 开发框架
|
JavaScript .NET 开发框架
|
JavaScript 前端开发 数据安全/隐私保护