《Programming ASP.NET》学习笔记(网站基础)

 网站基础

 

页面


.aspx文件称为内容文件,包括页面的可视化内容以及ASP.NET服务器控件
代码隐藏文件包含服务器端代码块

当浏览器请求Web服务器中的.aspx文件时
如果是第一次访问,将编译此页Page类,并被服务器缓存
在2.0允许在部署前对Web站点进行编译

编译类的名字来自.aspx的文件名
如果是默认页default.aspx,那么类名是_default
其他页的类名是此页文件名去掉扩展名

对于使用ASP.NET运行时进行处理的.aspx文件,必须把页指令置于文件第一行

Page类从Control类派生而来
常用页面类属性
名称  说明
Application 为当前 Web 请求获取 HttpApplicationState 对象
Cache  获取应用程序的 Cache 对象
ClientQueryString 获取请求的 URL 的查询字符串部分
Controls 获取对页面上Controls集合的引用
ErrorPage 在发生未处理的页异常的事件时请求浏览器将被重定向到该页
IsCrossPagePostBack 指示跨页回发中是否涉及该页
IsPostBack 是否为响应客户端回发而加载,或者是否正被首次加载和访问
IsValid  页验证是否成功
MaintainScrollPositionOnPostBack 回发后是否将用户返回到客户端浏览器中的同一位置
Master  获取确定页的整体外观的母版页
MasterPageFile 获取或设置母版页的文件名
PreviousPage 取得对前一页面的引用

 

代码隐藏

在一个文件中混排HTML,文本,控件和程序代码的方式叫单文件模式
这个单文件需要一个页面指令,而且任何被编译的服务器端代码都需要包含在<script>标签内

为了将表示代码与逻辑代码进行分离,可以将程序逻辑写入代码隐藏文件中

其他内容文件类型
类型  扩展名
网页  .aspx
用户控件 .ascx
Web服务  .asmx
母版页  .master

内容文件创建的类名称,由页面指令中的Inherits属性指定,默认为内容文件的原始名称,内容文件的代码隐藏文件名由CodeFile属性指定

在代码隐藏文件中,声明了一个继承自System.Web.UI.Page的partial(局部)类
public partial class _Default : System.Web.UI.Page
 
局部类允许将单个类的定义分开储存到多个源文件中

 

转到另一个页面

共有四种方法:超链接,服务器传输,浏览器重定向和跨页面发送


超链接(Hyperlink)

Hyperlink控件会直接转到其NavigateUrl属性值所指向的页面


服务器传输(Server.Transfer)

HttpServerUtility类的Transfer方法可以终止当前页的执行,并为当前请求开始执行新页
当重定向到新页面之后,浏览器地址栏会显示原来页面的URL地址

Server.Transfer有一个包含Boolean值的重载方法,表示是否保留原来页的 QueryString 和 Form 集合,默认是false

注意:使用Server.Transfer跳转后视图状态将会失效


浏览器重定向(Response.Redirect)

HttpResponse类的Redirect方法相当于一个可编程的Hyperlink
该方法将.aspx或.htm页面的URL地址作为字符串参数,在客户端执行重定向

Redirect响应速度比Transfer快,而且会强制验证和授权

Response.Redirect有一个包含Boolean值的重载方法,表示是否终止当前执行


跨页发送(Cross-Page Posting)

页面可以被提交到服务器,然后直接发送到另一个页面,而且只能是.aspx页面
通过特定控件的PostBackUrl属性实现
前页的控件可以通过Page.PreviousPage属性访问

 

状态

ASP.NET包括四种状态类型:视图状态,控件状态,应用程序状态和会话状态


会话状态

特性:
在禁用cookies浏览器中工作运行
对于已经存在的会话请求进行辨识
存储会话范围内的数据在多请求中使用
激发会话事件,如Session_Start和Session_End
如果会话结束或超时将自动释放会话资源

默认情况下,会话状态存储在服务器内存中
通过配置可以存储在单独的服务器或数据库中

利用SessionID可表示和跟踪会话
SessionID是全局唯一的,随机的

会话状态通过HttpSessionState类的内容集合属性实现
该集合是一个关键值字典,可以存储任何实现ISerializable接口的对象


使用:
Session["code"] = "ab";

string[] a = new string[2];
Books[0] = "a";
Books[1] = "b";
Session["books"] = Books;

string s = (string)Session["code"]
string[] b = (string[])Session["books"];

会话状态配置

页面会话状态配置由顶部Page指令控制
应用程序范围内的会话状态由web.config配置文件控制

例如:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" EnableSessionState="True" %>
其中EnableSessionState定义页的会话状态要求。
如果启用了会话状态,则为 true;如果可以读取会话状态但不能进行更改,则为 ReadOnly;否则为 false。默认值为 true。这些值是不区分大小写的。

通过设置web.config中system.web配置节的sessionState配置节配置会话状态
属性   说明
allowCustomSqlDatabase 指定会话状态 SQL 数据库是否可以是自定义数据库
cookieless 指定对于Web应用程序使用Cookie的方式,默认值为UseCookies
cookieName 指定存储会话标识符的Cookie的名称,默认值为 "ASP.NET_SessionId"
customProvider 自定义会话状态提供者的名称
mode  指定存储会话状态值的位置
regenerateExpiredSessionId 指定当客户端指定了过期的会话 ID 时是否重新发出会话 ID
sqlCommandTimeout 指定使用 SQL Server 会话状态模式的 SQL 命令的持续时间超时 
sqlConnectionString 为运行 SQL Server 的计算机指定连接字符串
stateConnectionString 指定远程存储会话状态的服务器名称或地址以及端口
stateNetworkTimeout 指定 Web 服务器与状态服务器之间的 TCP/IP 网络连接可以处于空闲状态的时间
timeout  指定在放弃一个会话前该会话可以处于空闲状态的分钟数
useHostingIdentity ASP.NET进程表示是否会被模拟

cookieless属性包括的值
值  说明
AutoDetect 确定请求浏览器或请求设备是否支持 Cookie
UseCookies 无论浏览器或设备是否支持 Cookie,都使用 Cookie
UseDeviceProfile根据HttpBrowserCapabilities设置来确定是否使用Cookie
UseUri  使用查询字符串来存储标识符。
 
mode属性包括的值
值  说明
Custom  会话状态将使用自定义数据存储区来存储会话状态信息
InProc  会话处于正在处理 ASP.NET 辅助进程的状态
Off  会话状态被禁用
SQLServer 会话状态将使用进程外 SQL Server 数据库来存储状态信息
StateServer 会话状态将使用进程外 ASP.NET 状态服务来存储状态信息

会话中的应用程序对象

另一个在会话之间传递信息的方法是通过静态对象
静态对象在global.asax文件中声明
如果声明对象的scope属性被设置为Session,就可以在代码中通过名称在会话内访问对象


视图状态

视图状态是指页面及其所有控件的状态
存储在页面一个隐藏字段的状态包中

如果不需要视图状态,可以禁用视图状态来提高性能
方法:
1 在Page指令将EnableViewState属性设为false
2 在Web.config的pages配置节的enableViewState属性设为false
3 在machine.config中做同样配置
4 通过设置控件的EnableViewState属性配置


状态包

如果值没有和控件关联,而交互中需要这些值,可以把这些值保存在页面状态包中

状态包使用与视图状态同样的隐藏字段来维持
通过ViewState关键字设置和获取状态包中内容的值

例如:
ViewState["count"] = 5;
int i = (int)ViewState["count"]


应用程序状态

global.asax文件包含web应用程序的全局代码
它包括Application_Start,Application_End,Application_Error,Session_Start和Session_End事件的处理程序

利用字典对象可以实现信息在应用程序范围内的全局共享
例如:
Application["str"] = "abc";
string a = (string)Application["str"];

注意:

并发和应用程序锁定
为解决并发的问题,使用HttpApplicationState类的Lock和UnLock方法控制对应用程序状态对象的访问

规模
在锁定应用程序状态同时,应注意同时请求数量的不断增加

存储器
每个应用字典对象都占用存储器

持久性和生存能力
在应用程序状态结束时,对应用程序状态的保存等措施

扩展至Web场和Web园
运行在多服务器和多处理器服务器上的情况

 

生命周期

每个请求都由Web服务器执行一系列步骤,这些步骤从开始到结束构成页面周期

 

指令

指令用于将选择设置传送给ASP.NET页面和编译器
格式:
<%@ directive attribute=value [attribute=value] %>


Application 指令

用于定义应用程序方面的属性,通常位于global.asax文件的第一行
例如:
<%@ Application Language="C#" %>

Application指令属性
属性  说明
Inherits 应用程序类继承的类名称
Description 应用程序类的文本说明
Language 指定代码所使用的语言


Assembly 指令

指令在编译期间将程序集链接到 ASP.NET 应用程序页

Assembly指令属性
属性  说明
Name  表示要链接的程序集的名称
Src  要动态编译和链接的源文件的路径


Control 指令

该指令包含在用户控件(.ascx)文件内,且每个文件只能有一个

Control指令属性
属性  说明
AutoEventWireup 指示控件的事件是否自动匹配
ClassName 用于指定需在请求时进行动态编译的控件的类名
Debug  指示是否应使用调试符号编译控件
Description 提供控件的文本说明
EnableViewState 指示是否跨控件请求维护视图状态
Explicit 如果使用VB,指示是否应使用Option Explicit模式来编译控件
Inherits 定义供控件继承的代码隐藏类
Language 指定代码所使用的语言
Src  指定包含链接到控件的代码的源文件的路径
Strict  如果使用VB,指示是否应使用Option Strict模式来编译控件


Implements 指令

指示页或用户控件实现指定的 .NET Framework 接口
 

Import 指令

将命名空间显式导入页或用户控件中


Master 指令

将一个页面表示为母版页


MasterType 指令

为页面的Master属性分配类名,使得该页可以获取对母版页成员的强类型引用
 

OutputCache 指令

以声明的方式控制页或用户控件的输出缓存策略
 
Page 指令

定义页面分析器和编译器使用的特定于页的属性。只能包含在 .aspx 文件中

常见Page指令属性
属性  说明
AutoEventWireup 指示页的事件是否自动绑定
Buffer  确定是否启用了 HTTP 响应缓冲
ClassName 指定在请求页时将自动进行动态编译的页的类名
ClientTarget 指示服务器控件应该为其呈现内容的目标用户代理
CodeFile 指定指向页引用的代码隐藏文件的路径
Debug  指示是否应使用调试符号编译该页
Description 提供该页的文本说明
EnableSessionState 定义页的会话状态要求
EnableViewState 指示是否在页请求之间保持视图状态
ErrorPage 定义在出现未处理页异常时用于重定向的目标 URL
Inherits 定义供页继承的代码隐藏类
Language 内联代码所使用的编程语言
SmartNavigation 指示页是否支持智能导航功能
Src  指定包含链接到页的代码的源文件的路径
Trace  指示是否启用跟踪
TraceMode 指示当启用跟踪时如何为页显示跟踪消息
Transaction 指示在页上是否支持事务
ValidateRequest 指示是否应发生请求验证


Reference 指令

以声明的方式将页或用户控件链接到当前页或用户控件


Register 指令

将别名与命名空间及类名关联起来,从而允许用户控件和自定义服务器控件在被包括到请求的页或用户控件时呈现

Programming ASP.NET By Dan Hurwitz, Jesse Liberty October 2005 ASP.NET, successor to Microsoft's Active Server Pages (ASP), is so complete and flexible that a web developer's main difficulty may lie simply in weaving the pieces together for maximum efficiency. The new edition of Programming ASP.NET shows developers how to do just that. Updated for Version 1.1 of the NET framework and Visual Studio .NET 2003, the second edition of this bestselling .NET title will show you how to create dynamic, data-driven web sites and services using both C# and Visual Basic .NET. In Programming ASP.NET, Second Edition authors Jesse Liberty and Dan Hurwitz cover everything you need to know to be effective with ASP.NET. The book includes a comprehensive tutorial on Web Forms, which, in conjunction with Visual Studio .NET 2003, allow you to apply Rapid Application Development techniques (including drag-and-drop control placement) to web development. Programming ASP.NET includes extensive coverage of each type of server control, including Web server controls, HTML server controls, and custom controls. New material covers creating ASP.NET pages for mobile devices. Since most web applications and web services involve retrieving data and returning it to a client browser, Programming ASP.NET Second Edition also offers extensive coverage of data access issues. These include topics such as using ASP.NET's list-bound controls; accessing data using the ADO.NET object model, and updating data with or without transaction support. Programming ASP.NET also discusses such advanced topics as: Caching and performance Security Configuration and deployment If you're already familiar with Active Server Pages technology, you'll appreciate the in-depth focus and straightforward, easy-to-read approach for developing web pages and web services. Succinct, direct, and loaded with examples, Programming ASP.NET, Second Edition will help users at every level master ASP.NET without getting bogged down in the complexity of its features.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值