ASP.NET页面解析(3)
事件模型
当某个页面被请求时,它的类及其所包含的服务器控件会负责处理请求,呈现HTML输出,并随后发回客户端。由于HTTP协议的固有特性,客户端与服务器间的通信是无状态且非连接的。而实际的应用程序需要状态,以便维护对同一页面的后续调用。使用ASP或其他服务器端开发平台(如Java Server Page和LAMP一类的基于Linux的系统),开发者必须负责状态的存储。而ASP.NET提供了一种内建架构,能够以透明的方式对页面的状态进行存储和恢复。尽管基于无状态的协议,但以这种方式,从客户端体验到的是连续的执行过程。然而,那只是一种表象。
视图状态简介
连续性所导致的这种表象,一方面与页面的设计和工作方式有关,另一方面是ASP.NET页面视图状态造成的。与此同时,服务器端控件也发挥着重要作用。简而言之,在页面将其内容呈现为HTML之前,页面要将自身及其所包含的控件的状态信息存储在持久性介质(一般为隐含字段)中。当该页面回发后,其状态会从隐含字段中被反序列化,用于对声明在页面布局中的服务器控件实例进行初始化。 每个页面实例有其特有的视图状态,因为该信息嵌入在HTML中。这样做的好处是,控件会以上一次创建的视图状态(即该页最后一次被呈现发送到客户端时的状态)的值进行初始化。此外,页面周期中还会有一个阶段,将已存储的状态与由客户端做出的更新合并。在回发后,页面执行时,它会发现一个有状态的且更新过的上下文,就像工作在连续的点对点连接上一样。 这里做了两个假设。第一个假设是,页面总是投递给自身,并携带着状态信息。第二个假设是,服务器端控件必须带有runat=server属性,以便在页面回发后具有“生命力”。
单窗体模型
不可否认,对于具有ASP或JSP经验的程序员来说,开始可能不太适应ASP.NET的单窗体模型。这些程序员在论坛和新闻组经常会问这样的问题:“窗体的Action属性在哪里?”以及“为什么我提交窗体时,不能重定向到一个特定页面?” ASP.NET页面只支持一个服务器端<form>(窗体)标签。所有要与服务器交互的控件,必须全部置于在该窗体中。窗体和控件都必须带有runat属性,否则会被视为纯文本,并被逐字输出。在服务器端,窗体是HtmlForm类的实例。HtmlForm类没有暴露任何相当于HTML <form>标签的Action的属性。其原因在于,ASP.NET页面总是投递给自己。除Action属性外,窗体其他常用属性(如Method和Target)还是完全支持的。 不包含服务器端窗体的,以及使用H
相关文档:
主要类:
System.Web.HttpRuntime
System.Web.HttpApplicationFactory
System.Web.HttpApplication
System.Web.Compilation.BuildManager
System.Web.Compilation.ApplicationBuildProvider
System.Web.Compilation.BuildProvidersCompiler
System.Web.UI.PageHandlerFactory
请求 ......
如果你已经有较多的面向对象开发经验,跳过以下这两步:
第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。 ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去!
第二步 对.NET Framework类库有一定的了解 可以通过开发Windows Form应用程 ......
SP.NET面试题
(转 原文地址http://blog.sina.com.cn/s/blog_524c848901009e7b.html~type=v5_one&label=rela_nextarticle 作者
李洋的博客
http://blog.sina.com.cn/liiyang)
1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答 . private : 私有成员, 在类的内部才可以访问。
prote ......
(转 原文地址http://blog.sina.com.cn/s/blog_524c848901009e7b.html~type=v5_one&label=rela_nextarticle 作者
李洋的博客
http://blog.sina.com.cn/liiyang)
66.软件开发过程一般有几个阶段?每个阶段的作用?
答:需求分析,架构设计,代码编写,QA,部署
67.在c#中using和new这两个关键字有什么意义, ......
在做asp.net的Web开发的时候,我们经常会遇到一次性上传多个文件的需求。通常我们的解决方法是固定放多个上传文件框,这样的解决办法显然是不合理的,因为一次上传多个,就意味着数量不确定。因此我们就要让这些文件上传框动态添加,下面我以我做的一个图库管理中的上传图片的功能为例
先看效果:
打开的初始界面:
默认 ......