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 ,如需转载请自行联系原作者
相关文章
|
开发框架 前端开发 JavaScript
Asp.net动态加载用户自定义控件,并转换成HTML代码
Asp.net动态加载用户自定义控件,并转换成HTML代码
60 0
|
.NET Windows 开发框架
|
前端开发 .NET 开发框架
ASP.NET MVC中的cshtml页面中的下拉框的使用
ASP.NET MVC中的cshtml页面中的下拉框的使用 用上@Html.DropDownList 先记下来。。以做备忘。。。
1312 0
|
.NET C# 开发框架
ASPX和Razor
ASPX   ASPX文件是微软的在服务器端运行的动态网页文件,通过IIS解析执行后可以得到动态页面,是微软推出的一种新的网络编程方法,而不是ASP的简单升级,因为它的编程方法和ASP有很大的不同,他是在服务器端靠服务器编译执行的程序代码,ASP 使用脚本语言,每次请求的时候,服务器调用脚本解析引擎来解析执行其中的程序代码,而ASP.NET则可以使用多种语言编写,而且是全编译执行的,比ASP 快,而且,不仅仅是快的问题,有很多优点。
1116 0
|
Web App开发 JavaScript .NET
怎样用JS获取ASP.NET服务器控件的客户端ID
虽然简单,不过曾经困扰多时,还是记录一下吧。   来源:http://mou518.blog.163.com/blog/static/1756052222010111434428828/   因为经常服务器控件在运行编译后ID是变化了的,如 运行编译后的结果可能是   如果直接用document .
780 0