每个aspx文件的背后总是有一个aspx.cs文件,这样就会有相应的类。那么这个页面的服务器控件就是子属性。那么在当别人打开这个页面的时候,是不是就创建了一个这个页面的对象?这个页面上的服务器控件就是这些类的子对象?如果是这样的话,这些子对象的值是如何绑定到前台的?是不是有一个类似于读模板的程序,把前台的文件当作模板一样读进去,然后赋值这样子?还是说把那些runat="server"的控件变成了DataBinder.Eval这样的“中间代码”来实现绑定?ASP.net的运行模式到底是怎样的。我如何知道这个过程,我读什么书可以知道?如何选择这些书?大家推荐一下。100分!

解决方案 »

  1.   

    给新手说不清楚,因为涉及太多的潜在基础知识,比如最基本的,你是否理解 HTTP Get/Post 等方式请求?
      

  2.   

    MSDN有一个视频,ASP.net编译原理,建议看一下。
      

  3.   

    每个aspx文件的背后总是有一个aspx.cs文件,这样就会有相应的类。那么这个页面的服务器控件就是子属性。======并不是 .aspx 都需要 .aspx.cs,你可以选择在 .aspx 通过 <script runat=server/> 块中定义在 .aspx.cs 能够定义的东东,也可以在 aspx 任意地方中用 <% %> 调用成员/输出内容,
    .aspx.cs 叫做 “Code-behind” 方式, 后者叫 inline(内联方式,类似 ASP 的处理方式)那么在当别人打开这个页面的时候,是不是就创建了一个这个页面的对象?这个页面上的服务器控件就是这些类的子对象?如果是这样的话,这些子对象的值是如何绑定到前台的?是不是有一个类似于读模板的程序,把前台的文件当作模板一样读进去,然后赋值这样子?还是说把那些runat="server"的控件变成了DataBinder.Eval这样的“中间代码”来实现绑定?========每一个 .aspx/.ascx/.master/.ashx/.asax 页面, 最终都会被解析并编译成为了一个 .cs 文件,假如你使用了 code-behind 那么这个 cs 还会从inherit属性指定的那个类继承这个不是“读模板的程序”,而是 Parse (解析),也就是说, ASP.NET 引擎会按预定义的可识别的格式将一个个 .aspx/.ascx/.master/.ashx/.asax 中的内容,解析成为一个完整的 cs 内容,这个 cs 的内容与你自己编辑的 cs 没有两样,只是它是机器自动生成的DataBinder.Eval 这样的代码块比较复杂 ....涉及的类,包括 
    System.Web.UI.PageParser
    System.Web.UI.UserControlControlBuilder
    .....
    ASP.net的运行模式到底是怎样的。我如何知道这个过程,我读什么书可以知道?如何选择这些书?
    ========
    这个主题太庞大,讲上三天三夜都说不完,且前提是你的背景知识要够,
    说白了,只有丰富的实践才能有助于你的理解因为,内容太多,目前没有发现市面有哪本书涉及此主题,小到 HTTP 协议,传统 html form(Web表单)提交模型, .....还有,.NET 中委托/事件模型 和 客户端 js 事件模型
    因为每个人都会告诉你 ASP.NET 是事件驱动的,而这与以上两者是紧密联系的你唯一能够找到的,就是诸如以下连接中提供的相关主题 ->ASP.NET 网页代码模型 
    http://msdn2.microsoft.com/zh-cn/library/015103yb(VS.80).aspxASP.NET 页生命周期概述 
    http://msdn2.microsoft.com/zh-cn/library/ms178472(VS.80).aspxASP.NET 编译模型概述
    http://msdn2.microsoft.com/zh-cn/library/ms178466(VS.80).aspxWeb 窗体页中的服务器事件处理
    http://msdn2.microsoft.com/zh-cn/library/at2tetf6(VS.80).aspx
    ....
    Hope helpful.
      

  4.   

    如果不用IDE如何开发?========是否使用 IDE ,与 ASP.NET 运行机制没有关系,不用IDE,你只有手动的,一个字母一个字母地输入你的源代码文件,包括 aspx和aspx.cs如果需要,通过命令行编译源文件IDE 只是助于是快速开发,当然效率是成倍的提升了 ...
      

  5.   

    你是如何从新手变成知道目前这么多的状态呢。我是读discuzNT的代码才想到这些问题的,我困惑了一个星期了。谢谢你的那些链接,非常感谢。我给这个帖子设置的分数太少了,可惜100分是上限,遗憾。谢谢你的热心,感激。