高效网站总结:
1. 线程
2. 高速缓存
3. Master页面
4. 主题和Skin
5. 站点导航
6. 个性化
7. 成员和角色管理
8. Portal Framework 和 Web Part
9. Web服务
10. AJAX
11. MVC
细节:
URL映射
server.Transfer(URL)
web.config urlMappings
UrlRewriter.NET [W1] web.config配置
Page指令的 MaintainScrollPositionOnPostBack 刷新页面时返回原来的位置
asp.net 3.5高级编程目录:
1. 应用程序和页面框架
2. 服务器控件和客户端脚本
3. Web服务器控件
4. 验证服务器控件
5. 使用Master页面
6. 主题和Skin
7. .NET3.5中的数据绑定
8. 使用ADO.NET管理数据
9. 使用LINQ查询
10. 使用XML和LINQ to XML
11. IIS7.0开发
12. 提供程序模型概述
13. 扩展程序模型
14. 站点导航
15. 个性化
16. 成员和角色管理
17. Portal Framework 和 Web Part
18. 用ASP.NET进行HTML和CSS设计
19. ASP.NET AJAX
20. ASP.NET AJAX控件工具集
21. 状态管理
22. 高速缓存
23. 高度和错误处理技术
24. 文件I/O和流
25. 用户控件和服务器控件
26. 使用业务对象
27. 建立和使用服务
28. 本地化
29. 配置
30. 测试
31. 管理
32. 打包和部署asp.net应用程序
附录A 迁移asp.net项目
附录B asp.net终极工具
asp.net 3.5高级编程: (ASP.NET高级编程(第5版) 清华出版)
第一章 应用程序和页面框架
1. 内嵌编码模式
2. 后台编码模式
11个指令
<%@ Page AutoEventWireUp= [W2] Inherits= [W3] "_Default" %>
<% @ Page Language="c#" ResponseEncoding ="gb2312"%> 設定目前 HttpResponse 物件的編碼語言。
<% @ Page Language="c#" CodePage ="gb2312"%> 设置当前 Page 的代码页标识符。
MaintainScrollPositionOnPostBack | 获取或设置一个值,该值指示回发后是否将用户返回到客户端浏览器中的同一位置。此属性替换已过时的 SmartNavigation 属性。 |
<%@ Page Import Namespace=" " %>
在web.config文件完成这个任务:
<namespaces>
<add namespace=" " >
</namespaces>
<%@OutputCache Duration="180" VaryByParam="None" %>
Duration属性指定这个页面存储在系统调整缓存中的时间(秒)
<%@ Reference VirtualPath=" " %>
另一个.net页面或用户控件应当与当前活动的页面或控件一起编译
<% %> 输出指令
<%@ %> 处理指令
<%@Page %> 特定属性,仅用在aspx.文件中,一个网页仅能使用一个@Page指令
<%@Control %>
<%@Import %>
<%@Implements interface ="in " %>
<%@Register %>
<%@Assembly %>
<%@Master %>
<%@PreviousPageType %>
<%@MasterType %>
<%@OutputCache %>
<%@Reference %>
主页面事件的 引发事件 :
@PreInit
@Init
@InitComplete
@PreLoad
@Load if(!IsPostBack)
@LoadComplete
@PreRender
@PreRenderComplete
@UnLoad
应用程序文件夹 (搜索: ASP.NET 网站布局 )
处理 回送:
if(Page.IsPostBack == true) { }
if(!Page.IsPostBack ){ }
跨 页面的 传送 :PostBackUrl PreviousPage.FindControl DEMO
第二页面使用从第一个页面中获得的属性 [W4]
(搜索: 确定调用 ASP.NET 网页的方式 )
确定请求是否来自Page1.aspx还是有人直接单击了Page2.aspx IsCrossPagePostBack 与asp.net 1.0/1.1中的IsPostBack属性类似 DMEO
使用内置的提供程序 DEMO
使用自己
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
下载页面:
http://sourceforge.net/projects/urlrewriter/files/
true指定页面事件自动触发
默认为true
指定编译页面时绑定到页面上的类名
要使用PreviousPageType指令
这个新指令允许使用VirtualPath属性指向Page1b.aspx
之后就可以在PreviousPage属性中通过IntelliSense查看Page1.aspx
方法一: 要获得前一个页面传送过来的控件值,只需创建此控件类型的一个实例,并用 PreviousPage 属性中的 FindControl 方法填充此实例
DEMO
方法二: 从第一页面中获取控件值的另一种方法是创建此控件的属性,如第一页 DEMO 第二页 DEMO
注意 : 在从页面传送另一个页面时,并不限于在第二个页面上处理回头的内容。实际上,还可以在Page1.aspx上为按钮添加一个OnClick事件和一个方 法,再为PostBackUrl属性指定一个值。然后就可以处理Page1.aspx上的回送,再移动到Page2.aspx上。
第一章 服务器控件和客户端脚本
HTML服务器控件
Web服务器控件
所有的控件都继承了一个特定的基类 (webControl)
有的派生于Control类
HTMl服务器控件都使用一个派生自HtmlControl基类(System.Web.UI.HtmlControl;)的类
把html元素转换为控件: runat = "server"
或者右击此元素,从菜单中选择Run as server control
就必须包含id属性
HtmlControl 基类
基类 HtmlContainerControl [W1] 用于一些HMTL类,这些类主要包含可以包含在单个节点中的HTML元素。例如,<img><input><link>元素用于派生HtmlControl类的类。
其他HTML元素,例如<a><form><select>,需要一对开闭标记。这些元素使用派生于 HtmlContainerControl类 的类
所有的HTML类 [W2] (搜索:System.Web.UI.HtmlControls 命名空间)
使用 HtmlGenericControl 类: [W3]
通过 javascript 处理页面和服务器控件
<body οnlοad=" javascript :document.forms[0]['TextBox1'].value=Date();"> DEMO
使用 Page . ClientScript 属性在.net页面上注册使用 javascript 函数
RegisterClientScriptBlock DEMO
更多的方法和属性可通过ClientScript对象(它引用了System.Web.UI.ClientScriptManager的一个实例)来获得。 [W4]
RegisterClientScriptInclude 方法可以在页面上注册脚本.js 文件 DEMO
客户端回调 (类似ajax) aspx DEMO cs DEMO
带一个参数的回调功能 aspx DEMO cs DEMO
第二章 Web服务器控件
Label AccessKey快捷键 AssociatedControlID绑定其他控件
Literal Mode="Encode" 输入HTML编码
TextBox TextMode
Focus()方法
派生于WebControl基类的服务器控件,都可以使用WebControl的Focus方法(如: TextBox )
TextBox1.Fouce(); //页面加载时,光标已经位于文本框中
OnTextChanged()方法
DEMO 给TextBox控件添加AutoPostBack属性,true
使用 AutoCompleteType 属性 允许对窗体应用 自动完成 功能
Button
CausesValidation ="False" 此按钮不引发验证过程
CommandName =" Button_Command " 让多个按钮来处理单个事件
OnClientClick 属性,指向客户端函数 DEMO
PostBackUrl 跨页面传送
LinkButton
ImageButton [W5]
HyperLink ImageUrl [W6]
DropDownList ListBox [W7] CheckBoxList RadioButtonList 控件可以从控件的集合中可视化地 删除数据项,而且可以操作未显示在服务器端代码中的项 DEMO
CheckBox if( CheckBox 1.Checked == true)
Calendar
选择一个日期 [W8] 从选项提取一个日期范围
控制日历中的日期如何展示
AdRotator 广告 XMLDemo
Panel HorizontalAlign 对齐 ScrollBars Direction (把滚动条放在Panel控件的哪边)
PlaceHolder DEMO
BulletedList BulletStyle 列表显示样式
BulletStyle ="CustomImage" BulletImageUrl ="~/myImage.gif" //用图像作为项目符号
DisplayMode ="LinkButton" //第项变成超连接 [W9]
动态填充BulletedList服务器控件
HiddenField
FileUpload
指定正确的ASP.NET 权限 给上传文件
文件大小的 限制 web.config中修改httpRuntime (要位于<System.web>节点间)默认为4MB
maxRequestLength 指定发送给服务器的请求的大小 KB
executionTimeout 指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。
DEMO SaveAs PostedFile.FileName PostedFile.ContentLength
给 服务器上传多个文件 HttpFileCollection Request.Files
把上传的文件放在 Stream 对象中 DEMO FileContent
把文件内容从 Stream 对象移动到 Byte 数组中 DEMO
MultiView DEMO
Wizard DEMO 在控件内建立窗体
HeaderText ="标题"
WizardStep
AllowReturn ="False" 不能向后导航包含此属性的已查看过的步骤
StepType ="Finish"
ImageMap 指定可单击的图像部分
第三章 验证服务器控件 Page.IsValid
ErrorMessage ="must enter name" Text ="*" 两属性区别
foreach(BaseValidator bv in Page.Validators)
关闭 客户端验证功能:
DEMO EnableClientScript="false"
DEMO2
为错误通知使用 图像 和 声音 :
DEMO 使用图像 Text ='< img src="01.gif">'
DEMO 使用声音 Text ='< bgsound src="12.wav">'
使用 验证组 : DEMO .net 3.5 新属性
ValidationGroup ="Login" 不仅验证控件有这个属性, Button 服务器控件也有
不通过验证的 自动获得焦点: SetFoucOnError="True"
RequiredFieldValidator 检查是是否输入了信息 DEMO
InitialValue 属性 指定文本元素的初始值,并要求用户更改其值
要求改变初始值,且同时禁止空白条目,用到两个控件 DEMO
验证下拉列表 DEMO
CompareValidator 可以比较两个窗体元素,也可以比较窗体元素包含的值与指定的常量。例如,可以指定窗体元素的值必须是一个整数,且大于指定的娄。也可以要求值必须是字符串,日期或其他类型 Operator : 大于 小于 等于
根据其他 控件 来验证 DEMO
根据 常量 来验证 DEMO Type ="Integer"
DEMO2 ValueToCompare="18" Operator="GreaterThan"//大于19
RangeValidator 根据一个数字范围或字母范围检查用户的输入
DEMO MaximumValue ="40" MinimumValue ="30"
DEMO 检查日期 Type ="Date"
RegularExpressionValidator 检查用户的输入是否匹配正则表达式定义的模式,电子邮件,电话等 DMEO ValidationExpression ="/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*"
CustomValidator 使用定制的验证逻辑检查用户的输入
使用客户端验证 DEMO ClientValidationFunction ="validateNumber"
使用服务端验证 DEMO
联合使用客户端和服务端验证 DEMO
ValidationSummary 在页面的一个特定位置显示验证器的所有错误消息
DEMO
DMEO2 ErrorMessage ="must enter name" Text ="*"
DEMO3 使用对话框报告验证错误
ShowSummary ="False" 表示带项目符号的错误列表不显示出来
ShowMessageBox ="True"
第四章 使用Master页面
以 编程 方式将 Master 页面赋予内容页面 Page_PreInit DEMO
Web .config文件指定Master页面
< system.web >
< pages masterPageFile = " ~/MasterPage.master " >
</ pages >
</ system.web >
只把 Master页面应用于一个页面子集(例如包含在应用训育特定文件夹中的页面)
< location path = " AdministrationArea " > [W10]
< system.web >
< pages masterPageFile = " ~/MasterPage.master " >
</ pages >
</ system.web >
</ location >
Master页面的嵌套 MasterPageFile
全面页面标题
使用Master页面中的控件和属性
获取内容页面中Label控件的Text值 使用Master页面提供的FindControl方法 获取页面上的控件
把Master页面上的服务器控件设置为公共属性,FindControl找不到控件时 就不易出错 DEMO
重写Master页面上的Label控件的一个属性 DEMO
覆盖Master页面中属性的内容页面 PageHeadingTitle
特定浏览器的Master页面 Mozilla:MasterPageFile=
事件的触发顺序:
Master页面子控件的初始化:先初始化Master页面包含的所有服务器控件
内容页面子控件的初始化:初始化内容页面包含的所有服务器控件
Master页面的初始化:初始化Master页面
内容页面的初始化:初始化内容页面
内容页面的加载:加载内容页面(这是Page_Load事件,后跟Page_LoadComplete事件)
Master页面的加载:加载Master页面(这也是Page_Load事件,后跟Page_LoadComplete事件)
Master页面子控件的加载
内容页面子控件的的加载
高速缓存Master页面:
<%@ OutputCache Duration = "10" Varybyparam="none" %>
这会有服务器的内存中把页面缓存10秒,可以用于包含不会很快过时的页面
此指令只能用于 内容 页面
ASP.NET AJAX 和 Master页面:
必须把 ScriptManager 控件放在Master页面上 DMEO
一个页面上只能有一个 ScriptManager 控件
直接新建立 AJAX Master页面
通过Master页面包含js脚本 DEMO <asp:ScriptReference Path=
如果内容页面还需要使用 Ajax 功能,就需要使用位于Master页面的 ScriptManager 控件
可使用 ScriptManagerProxy 控件访问Master页面上的 ScriptManager 控件
此页面内容使用 ScriptManagerProxy 添加额外的脚本 DEMO
第五章 主题和Skin
主题文件 DMEO
主题应用于整个应用程序 DEMO
SkinId
EnableTheming = "false" //不把主题应用于此控件上
可以使用(如Panel控件)封装其他控件,再把其设置 EnableTheming
Page指令也可以
优先采用Master页面的 EnableTheming 设置
< asp : TextBox ID ="TextBox1" runat ="server" BackColor ="#003300"></ asp : TextBox >
如果Page指令使用 Theme 属性来指定主题,主题会重写 BackColor ,如果使用 StylesheetThele 属性,本地设置的属性会不变
.skin文件 与.aspz页面上的常规控件定义一样,也包含runat = "server"
控件的skin版本中没有指定ID属性
在主题文件夹建立 Images 文件夹,放置图片
在 TreeView 控件中使用 theme 文件夹中的图像 DEMO
WebParts 控件用于建立入口 合并 theme 文件夹中的图像 DEMO
CSS中直接使用图像 DEMO
服务器控件的多个版本 SkinID="TextboxDotted" DMEO
而默认的skin是文件中一个没有SkinID属性的Skin
编程使用主题:
编程指定页面的主题 DEMO
必须在页面上静态控件的Page_PreInit事件触发之前设置Page属性的主题,
如果使用动态控件,就应把此控件加到Controls集合中之前,设置Theme属性
编程指定控件的SkinID 同样,也是在代码Page_PreInit事件中或之前使用这个属性
禁止给定制控件应用主题 [Themeable(false)] DEMO
禁止对定制控件上的 属性 应用主题 DEMO
把一个主题定义应用于定制控件 要把Themeable属性设置为true DEMO
改变定制控件中的属性 DEMO
第六章 .NET3.5中的数据绑定
所有的数据源控件都派生于 DataSourceControl 类,而DataSourceControl类派生于 Control ,实现了 IDataSource 和 IListSource 接口
也就是说,虽然每个控件都使用特定的数据源,但所有的数据源控件共享一组基本的 核心 功能。这也说明,很容易根据特定数据源的结构创建定制的数据源控件
控件名 | 说明 |
SqlDataSource | 允许访问支持ADO.NET数据提供的所有数据源 ODBC/OLE DB/SQL SERVER/ORACLE/SQL SERVER CE DataSourceMode属性: (告诉控件,在检查数据时,是使用DataSet还是使用DataReader) DataReader:只前向的只读光标, [W11] DataSet:能执行过滤,排序或分布等其他操作,控件的调整缓存功能 使用SelectParameters过滤数据 [W12] : 用于在运行时修改从查询中返回的数值 (好像可视化修改SelectQuery参数) ConflictDetection属性: 告诉控件在更新数据时使用什么样式的冲突检测。如果多个用户尝试修改相同的数据,它确定了执行什么操作。 更新数据后,检测并发错误 DEMO 用数据源事件处理数据库错误: DEMO |
LinqDataSource | 使用Linq查询访问不同类型的对象 |
ObjectDataSource | 对业务对象或其他返回数据的类执行特定的数据访问 要新建xsd数据集 |
XmlDataSource | < asp : XmlDataSource ID ="XmlDataSource1" runat ="server" DataFile ="http://msdn.microsoft.com/rss.xml" XPath ="rss/channel/item"> </ asp : XmlDataSource > |
SiteMapDataSource | 对站点地图提供程序所存储的web站点进行特定的站点地图数据访问 |
AccessDataSource |
配置数据源控件的高速缓存功能: EnableCaching ="True" CacheDuration=" Infinite "
除了SiteMapDataSource控件外,调整缓存自动内置于.net所有的数据源控件中。
所有的数据源控件(除SiteMapDataSource外)都可以创建基本的高速缓存策略,包括调整缓存的方向、期限策略和关键字依赖
提示:只有把DateSourceMode属性设置为DataSet,才能使用 SqlDataSource 控件的高速缓存功能。如果此属性设置为 DataReader ,控件就会抛出一个NotSupportedException
高速缓存的期限可以设置为特定的时间长度,例如3600秒(60分),也可以把它设置为 Infinite ,使高速缓存的数据永远不过期。
存储连接信息: web.config
在运行时修改连接字符串属性 DEMO
使用ConnectionStringBuilder动态建立连接字符串,并把它们保存到web.config文件中 DEMO
使用绑定的列表控件和数据源控件:
GridView
使用 EmptyDataText t [W13] 和 EmptyDataTemplate 属性
编辑其行数据 (给控件添加UpdataCommand属性) 在其数据源 更改高级SQL生成选项
DetailsView
ListView
FormView
其他数据绑定控件:
DropDownList
ListBox
RadioButtonList
CheckBoxList
TreeView
Ad Rotator
Menu
内部数据绑定语法:
3.5中的语法 内部数据绑定的内容基本没变,但语法较简单,
<%# Container.DataItem("Name") %>
<%# Eval("Name") %>
<%# Eval("HireDate","{0:mm dd yyyy}") %>
双向绑定 <%# Bind("Name") %> 支持数据的读取和定入
新的bind方法应在控件 GridView DetailsView FormView 中使用,这些控件能自动更新数据源
表达式的额外功能:
<%# "232323232" + Eval("Name") %>
<%# DoSomeProcess(Bind("Name")) %>
XML数据绑定:
<% XPathBinder.Eval(Container.DataItem,"emplotees/employee/Names") %>
<% XPath("emplotees/employee/Names") %>
<% XPath("emplotees/employee/Date","{0:mm dd yyyy}") %>
返回匹配XPath查询的一个节点列表
<% XPathBinder.Select(Container.DataItem,"employees/employee") %>
或者使用缩写<% XPathSelect("employees/employee") %>
第七章 使用ADO.NET管理数据
ADO.net连接Sql Server 数据库通过 SqlConnection 对象 来实现
ADO.net连接 Access 数据库通过 OleDbConnection 来实现数据库连接 [W14]
Connection DEMO 使用web.config文件中的连接字符串 DEMO
Command DEMO [W15] select语句
DataAdapter 数据适配器 DEMO select updata delete竺语句
DataReader DEMO ExecuteReader
DataSet DataTable
从DataReader中加载DataTable DEMO
访问类型化的DataSet中的一个字段 DMEO
使用参数:
有助于防止可能的SQL注入攻击 DEMO
参数插入数据库 DMEO 10-5.aspx.cs 10-5.aspx
用 OracleClient 对象连接Oracle数据库 DMEO [W16]
命令的异步执行:
要使用.net 2.0中的异步处理,需要给连接字符串添加 Asynchronous Processing = true;
SqlCommand类的异步方法:
BeginExecuteNonQuery
EndExecuteNonQuery。。。。包括其他的重载方法
BeginExecuteReader
EndExecuteReader.......
IAsyncResult接口:
SqlCommand类的所有异步方法都返回一个对象的引用,此对象实现了 IAsyncResult 接口
AsyncCallback
SqlCommand类的一些异步方法接收一个AsyncCallback类的实例
WaitHandle类
ADO.NET 中异步处理的方式:
poll方式 DEMO
Wait方式 DEMO 使用System.Threading. WaitHandle 类的 WaitOn 方法
使用多个等待句柄 最好的
组合使用多个等待句柄和MARS DMEO
使用WaitAny方法处理多个异步进程 DMEO
回调方式 DMEO
第八章 使用LINQ查询
LINQ to Objects 其功能位于System.Data.Linq程序集中
传统 的查询方式: Movie类 DEMO
生成一列Movie对象,并绑定到GridView上 DEMO
过滤列出的Movie对象 DEMO
对Movie对象列表进行分组和排序 DMEO
用 LINQ 替代传统 查询 :
基本的LINQ查询的投射 添加LINQ命名空间 demo
创建查询 DEMO
创建定制投射 DMEO
创建定制投射的字段名称 DEMO
控件对象的排序 DEMO
查询过滤器 DMEO
数据分组 DEMO
其他数据运算符 Count MIn Max等 DEMO
连接 DEMO
分页 DEMO
LINQ to XML (或XLINQ)
.net framework中大多数XML功能都位于System.Xml命名空间中,但XML对整个Framework的影响还包括System. Data 和Sysem. Web 命名空间
XML demo [W17]
查询XML数据文件 DEMO
映射XML元素 DEMO
连接XMl元素 DEMO
XML DEMO DEMO
XSD DEMO
LINQ to SQL (或DLINQ)
会自动把生成的类显示为单数形式
LINQ to SQL中查询Movie数据 DEMO
把查询写到输出窗口中 DEMO
分组 DEMO
用视图查询 DEMO
从存储过程选择数据 DEMO 简单的存储过程
使用LINQ插入数据 InsertOnSubmit InsertAllOnSubmit DEMO
更新数据 DEMO
删除数据 DEMO
第九章 使用XML和LINQ to XML
用XmlReader处理XML DEMO
XDocument处理XML [W18] DEMO
用XmlReader验证XML DENO
用NameTable 优化XmlReader DEMO
从XML中提取.NETCLR类型
使用XmlReader.ReadElementContentAs DEMO
用XmlWriter创建XML 用XmlWriter输出bookstore DEMO
用XPathDocument和XPathNOdelterator查询XML DEMO
用XPath表达式查询XDocuments DEMO
XmlDataSource控件 DMEO
第十章 IIS7.0开发
第十一章 提供程序模型概述
.net 3.5的新系统要求有较高级的状态管理,这些系统包括:
成员
角色管理
站点导航
个性化
健康监控Web事件
Web Part个性化
配置文件保护
ASP.NET配置(web.config)无法连接到SQL Server 数据库的解决方法
配置SQL Server 2005 以允许远程连接
默认情况下,这些系统只能使用新的sql server express 版本的文件(.mdf),不能与比较成熟的sql server版本一同使用,如sql server 7 2000 2005等
设置提供程序
>aspnet_regsql.exe -A all -E
在web.config文件中修改连接字符串,以使用sql server 2005 DEMO
修改通过配置使用的SQL server DMEIO 这样 sql 2005实例就是一个可用于应用程序的的提供程序了
Membership提供程序 这两个成员提供程序继承了MembershipProvider基类
System.Web.Security.SqlMenbershipProvider 使 用成员系统连接sql server 2000/2005和新的express版本。默认的提供程序是SqlMenbershipProvider实例。在应用程序服务器上,每个 ASP.NEtT应用程序的默认声明位于machine.config文件中,这文件位于../Framework/v2.0.50727/CONFIG 目录中 DEMO
System.Web.Security.ActiveDirectoryMembershipProvider 使用成员系统连接Microfost Active Directory
Role提供程序
System.Web.Security.SqlRoleProvider 连接角色管理系统和SQL Server 2005 DEMO
System.Web.Security.WindowsTokenRoleProvider
System.Web.Security.AuthorizationRoleProvider
SiteMap提供程序
System.Web..XmlSiteMapProvider
SessionState提供程序
Web事件提供程序
配置提供程序 加密配置文件的各个部分
WebParts提供程序
第十二章 扩展程序模型
第十三章 站点导航
使用 SiteMap 类或 SiteMapDataSource 控件 [W19] 与这个导航信息交互
站点地图 demo
PathSeparator 属性 更改">" DMEO DMEO2
PathSeparatprTemplate 元素 更改">",可以放置Image控件 DEMO
PathDirection 改变输出中生成的链接方向
ParentLevenlsDisplayed 会只显示指定深度的页面
TreeView 服务器控件
要填充TreeView控件的节点,不仅可以使用.sitemap文件,还有许多其他方式。一种比较好的方式是使用 XmlDataSource 控件(而不是SiteMapeDataSouce控件)从XML文件中填充TreeView控件
编程 扩展或折叠TreeView控件的节点 DEMO
编程展开特定的节点 DEMO
使用Expanded属性编程展开节点 DMEO
给TreeView控件编程添加节点 DEMo
Menu服务器控件 DEMO
要使用 SiteMapDataSource 控件 SiteMapDataSource会自动处理Web.sitemap文件
使用预定义的样式 DEMO
改变 静态 项的样式 DMEO [W20]
给 动态 项添加样式 DEMO [W21]
修改菜单项的布局 DEMO 垂直
改变弹出符号 使用定制的图像 StaticPopOutImageUrl="myArrow.gif"
用图片分隔 ynamicBottomSeparatorImageUrl="myDivider.gif"
使用Menu控件和XML文件 DEMO
SiteMap API
URL映射 : urlMappings DEMO
要映射到应用程序不包含的页面上
server.Transfer(URL)
安全补偿 security trimming
<siteMapNode> 的role属性
默认情况下,安全补偿功能是禁用的,
在web.config文件中启动角色管理系统 DEMO
在web.config文件中锁定AdminOnly.aspx页面 demo
启动提供程序中的安全补偿功能 DEMO
then就可以在站点导航系统中使用<siteMapNode> 的role属性了
嵌套站点地图文件
Entertainment.sitemap
then给Web.sitemap文件添加新内容
< siteMapNode siteMapFile=" Entertainment.sitemap " />
在同一个Web.sitemap文件中使用另一个提供程序 DEMO
then给Web.sitemap文 件中使用第二个提供程序
< siteMapNode privider="AspNetXmlSiteMapProvider2" />
第十四章 个性化
创建个性化属性
添加简单的个性化属性 DEMO
把个性化属性应用于匿名用户的功能在默认情况下是禁用的
使用定义好的个性化属性 DEMO
使用后期的绑定技术 DEMO
添加一组个性化属性 DEMO
使用分组的个性属性 DEMO
定义类型 DEMO
创建一个要用作个性化类型的 类 DEMO web.config指定个性属性用 复杂类型 (类) DMEO
默认值 DMEO
属性指定方只读 readonly="True"
允许进行匿名身份识别 DEMO
给匿名身份修改Cookie的名称 DEMO
管理应用程序的配置信息 建立ProfileManager.aspx页面 DEMO
第十五章 成员和角色管理
传统上,处理Windows Forms 应用程序(胖客户)时,使用 Windows Integrated Authentication;
处理基于浏览器的应用程序(瘦客户)时,使用 Forms 验证
< authentication mode = " Forms " />
打开了使用.net 3.5提供成员服务所需要的所有功能
终端用户尝试访问站点时,使用匿名身份进入站点,这是默许的身份验证模式
给web.config文件添加<forms>元素 修改Fomrs验证系统的行为 DEMO
添加用户
使用 CreateUserWizard 服务器控件 把注册用户放在数据库中,以便以后进行检索
重新设置sql server的成员的提供程序,使之不需要密码包含非数字和字母的字符 DEMO
ContinueButtonClick事件 单击时
CreateUser事件 成功创建一个用户时触发
从注册过程中合并个性化属性
先在web.config文件中创建个性化属性 DMEO
than使用个性化属性和CreateUserWizard控件 DEMO
编程创建用户 DEMO
捕获特定的MembershipCreateUserException值 DMEO
authorization 拒绝未验证的用户 DEMO
使用Login服务器控件 DMEO
编程登录用户 DEMO
锁定输入错误密码的用户 在提供程序声明中修改密码尝试次数 DEMO
处理验证用户: LoginStatus LoginName
LoginStatus控件的登录和注销功能 DEMO
显示验证用户的用户名 DEMO
显示在线用户数 DEMO 时间范围在machine.config文件设置,
<membership userIsOnlineTimeWindow="15"></membership > 15分钟
处理密码:
ChangePassword控件 允许用户修改密码 DMEO
PasswordRecovery控件
建立SMTP服务器
在web.config文件中配置通过电子邮件传送的密码 DEMO
从数据库中提取密码 DEMO [W22]
生成随机密码 DMEO
用陙 机密码创建用户 DMEO
3.5的授权:
通过LoginView控件控件显示的信息 DEMO
角色管理 machine.config.comments文件中的角色管理提供程序设置 DEMO
web.config文件 DEMO
给应用程序添加角色 DEMO
Roles.GetAllRoles() 返回服务中所有角色的String集合
从应用程序中删除角色 DEMO
给角色添加用户:
Roles.AddUsersToRoles(usernames9() As String ,rolenames() As String)
从角色删除用户:
Roles.RemoveUsersFromRoles(usernames9() As String ,rolenames() As String)
查找某个角色的所有用户 DEMO
获取包含某个用户的所有角色 DEMO
在某个角色查找特定的用户 DEMO
设置提供程序
>aspnet_regsql.exe -A all -E
第十六章 Portal Framework 和 Web Part
WebPartManager控件必须放在Portal Framework的应程序的每个页面中。一个WebPartManager只能管理一个页面。
也可以把WebPartManager控件放在Master页面上,从而避免每个内容页面上放置一个WebPartManager控件
创建多个Web区域 DEMO
WebPartZine控件
LayoutOrientation属性 水平或直
ZoneTemplate元素 封装了一个区域中的所有项
给页面添加模式列表 DEMO
给页面添加 Web Part 添加Catalog Zone DEMO [W23]
修改Web Part设置 在页面上添加Editor Zone DMEO
Behavior 块允许终端用户选择是否关闭、最小化和导出Web Part
为显示Behavior块,首先要修改Web.config文件 DEMO
添加一些代码,以显示Behavior块, DMEO
连接 Web Part 会用 <asp:ConnectionZone>控件在两个Part之间建立连接
禁用修改区域的功能 DEMO
通过其他方式添加控件
DeclarativeCatalogPart 控件 DEMO
合并目录类型 DMEO
Web Part动词
<CloseVerb> 使Web Part中的Close链接灰显 DMEO
删除Close链接 DMEO
<ConnectVerb>
<DeleteVerb>
<EditVerb>
<ExportVerb>
<HelpVerb>
<MinimizeVerb>
<RestoreVerb>
给 Web Part动词使用图像 DMEo
使用Web Part中的类:
WebPartManger
WebPartZone
WebPart
创建定制的Web Part控件 DEMO
建立提供程序 Web Part
建立一个接口以提供用于传递给Web Part的属性 DEMO
建立定制的提供程序Web Part DEMO
建立用户Web Part DMEO
连接ASP。NET页面上的Web Part DMEO
连接Web Part时处理Master页面时,使用 ProxyWebPartManger 控件
第十七章 用ASP.NET进行HTML和CSS设计 引用
视图 管理样式 应用样式
在Master页面中管理相对CSS链接
第十八章 ASP.NET AJAX
ScriptManager 控件,负责加载ASP.NET AJAx 需要的JavaScript库
ScriptManagerProxy 控件,专门用于master页面
如果要以任何方式修改Master页面上的ScriptManager控件,就必须在内容页面上添加一个ScriptManagerProxy控件
Timer 控件 DMEO
UpdatePanel 控件
<ContentTemplate>元素 DEMO
<Triggers> 元素 DMEO [W24]
在VS2008中建立 Triggers 触发器
UpdateProgress 控件
显示文本信息 DMEO
控制信息显示的时间 DMEO
在<ProgressTemplate>中添加图像控件
使用多个UpdatePanel控件 DMEO
UpdateMode属性(Always表示每个UpdatePanel控件总是在每次异步请求时更新 Conditional表示仅在满足一个触发条件时更新) DEMO
asp.net ajax 语法
第十九章 ASP.NET AJAX控件工具集
www.asp.net/ajax
常访问这些控件的CodePlex页面
AlwaysVisibleControlExtender 控件 DEMO
指定在需要滚动的长页面上总是显示出来
AnimationExtender 控件 DMEO
编写动画可以使用以下和事件:
OnClick
OnHoverOver
OnHoverOut
OnLoad
OnMouseOver
OnMouseOut
AutoCompleteExtender 控件 自动匹配所输入的结果 aspx.cs aspx
CalendarExtender 控件 只有单击此才会弹出日历 DEMo
PopupControlExtender 控件 为任何控件创建弹出窗口。 DEMO
CollapsiblePanelExtender 控件
把一个控件折叠到另一个控件 DMEO
使用Label控件展开和折叠Panel控件 DMEO
ConfirmButtonExtender 控件
通常在允许终端用户通过浏览器应用程序删除数据之前,都要终端用户确认此操作 DMEO
创建自己的确认窗体 DEMO
DragPanelExtender 在页面上拖动Panel控件 DMEO
DropDownExtender 使用Image控件作为下拉列表的启动器 DMEO
DropShadowExtender 阴影等 Rounded属性设置为True就圆角 DEMO
DynamicPopulateExtender 获得HTML输出,之后把HTML输出放在Panel控件上 aspx.cs aspx
FilteredTextBoxExtender 限制文本框只能使用数字 DEMO
HoverMenuExtender 相当于工具提示
ListSearchExtender 扩展ListBox控件 DEMO
MaskedEditExtender maskededitvalidator 扩展了 FilteredTextBoxExtender 控件 DEMO
Mask 蒙板字符
9:仅输入数字
L:仅输入字母
$ : 仅输入字母或空格
C:仅输入定制字符(区分大小写)
A:仅输入字母或定制字符
N:仅输入数字或定制字符
?:任意字符
除字符限制外,模板中使用的分隔符如下:
/ 日期分隔
: 时间
. 小数
,千位分隔
/ 转义
{ 重复蒙板的起始分隔符
} 重复蒙板的结束分隔符
maskededitvalidator 使用它的ControlExtender属性把它自己和MaskedEditExtender控件关联起来,使用ControlToValidate属性检查窗体上的特定控件。 EmptyValueMessage指定错误的信息
ResizableControlExtender
可以提取一个Panel控件,让终端用户捉取一外句柄,改变元素的大小 DEMO
RoundedCornersExtender 圆角 DMEO
TextBoxWatermarkExtender 文本水印功能 DEMO 给水印应用样式 DMEO
ToggleButtonExtender
处理复选框控件,可以使用自己的图像替代复选框控件一般使用的标准复选图像 DMEO
UpdatePanelAnimationExtender
可以使用两个特定的事件把动画应用于Panel控件上。第一个事件是OnUpdating,第二个事件是OnUpdated,接着使用ASP。NET AJAX动画框架 DEMO
ValidatorCalloutExtender
添加更加引人注意的有效性验证信息 DEMO
SlideShowExtender 张灯片 aspx.cs aspx
SliderExtender 滑块 DMEO
MutuallyExclusiveCheckBoxExtender 一组复选框,把它们用作单选按钮 DEMO
NumericUpDownExtender 可以把上/下指示器放在文本框控件旁边 DEMO
对控件使用字符而不是数字 DEMO
PagingBulletedListExtender
可以使用很长的项目列表,并给列表按字母顺序分页 DEMO
AJAX控件工具箱中的 服务器 控件:
Accordion 控件 可折叠的面板 DEMO
包含表示为accordionpane 控件的面板
PasswordStrength DEMO
检查文本框控件中密码的内容,验证其保密强度,它还给用户提供一个信息,说明此强度是否合理
Rating 星级 DMEO
TabContainer 标签 DEMO
NoBot 用于确定实体如何与窗体交互,帮助确保人们使用窗体,而一些自动化代码不操作应用程序
限制登录窗体 aspx.cs aspx
第二十章 安全性
第二十一章 状态管理
.NET内置对象
Application 对象 DMEO
对任何用户请求的.net应用程序的所有网页都可用
在线用户 Global.asax aspx.cs aspx
Session 对象
对单个用户请求的.net应用程序的所有网页都可用
DEMO 所需的类 cs aspx.cs aspx
输出Session内容 DEMO
Session .Clear (); 清除
Session.Timeout = 2; 过期
优化会话性能 的高级技术<@Page EnableSessionble = " " > [W25]
如果应用程序不使用Session,在Web.config文件中设置Mode=“OFF”
会减少整个应用程序的开销
Cookie 对象
DEMO DEMO2 MyCookie_t. Expires .AddYears(100); 过期
Sever 对象
获取服务器的路径 DEMO Server.MapPath("books.xml") 得到此文件的完整文件名
防止脚本入侵 DEMO Server.HtmlEncode
页面中乱码的处理 DEMO Server.UrlEncode() Server.UrlDecode()
Response 对象
缓存机制 DMEO
服务器日志 Response. AppendToLog (" 这是一个服务器 ");
日志文件路径 IIS中 启用日志记录F:/WINDOWS/system32/LogFiles
Response. End ()停止页面信息输出 DEMO Response.Flush();//立即输出缓存
Response.AddHeader("Location", "http://www.yahoo.com.cn");
Response .WriteFile输出图片文件 DEMO
页面传递参数 aspx.cs aspx
输出页面信息 DEMO
Response.clear() // 同时删除响应体和响应报头
Response.cleartContent() // 只删除响应体而不删除响应头
Response.clearHeader() // 删除响应体
Request 对象 派生自HttpRequest
Request.QueryString[" "]; //Request.RequestType使用的是get
Request.Form[" "]; //Request.RequestType使用的是Post
Request.Params[ ]; //遍历查找可使用的方法
Request[" "]; //
为短时间状态存储应用 HttpContext .Current.Items
在IHttpModule和IHttpHandler之间共享内容
一个HttpRequest中的各个单元需要处理相同或类似的数据。如果数据的生存期只是一个请求,就可以考虑使用HttpContext.Items作为短期的高速缓存
第二十二章 高速缓存
高速缓存:
输出高速缓存 <%@ OutputCache Duration="60" VaryByParam="None" %> [W26]
.net中的高速缓存实现为一个HttpModule,它通过ASP.NEt辅助进程监听所有HttpRequest。
OutputCacheModule监听应用程序的ResolveRequestCache和UpdateRequestCache事件,处理高速缓存的请求和失败,返回缓存的HTML。如果需要,绕过页面处理程序
VaryByParam 属性 VaryByParam="pageId;subPageId" 指定哪些QueryString参数会高速缓存页面的新版本
VaryByParam ="*" 根据QueryString参数中的差别高速缓存页面的新版本
VaryByParam ="*" VaryByHeader ="User-Agent" User-Agent表示用户的浏览器类型。.net可以自动生成给定页面的不同显示结果,用于特定的浏览器
VaryByControl 属性 控件的ID
VaryByCustom 属性
部分页面(UserControl)的高速缓存:
< Shared="true"> 一个用户控件只会缓存一次,为所有页面所用
Post-Cache Substritution 使用Substitution 控件
客户端调整缓存
编程调速缓存
DataSet ds = new DataSet();
ds = (DataSet)Cache["WhatINeedToStore"];
SQL Serber 2005 高速缓存禁用功能
第二十三章 高度和错误处理技术
<%@ Page Trace="true" %>
Trace.Write("目前是在Page_Load事件",User.Identity.ToString());
<system.web>
<trace enabled="" pageOutput="false">
<compilation debug = "">
localhost/trace.axd 显示应用程序页面的跟踪信息
第二十四章 文件I/O和流
第二十五章 用户控件和服务器控件
检测和响应浏览器功能
.browser文件
所有的浏览器标识和功能信息都存储在.browser文件中
在服务器端代码中检测浏览器的功能 DEMO
使用ViewState
VireState可以在Web页面的整个生命周期中,把控件的状态存储在一个隐藏的窗体字段(它显示为HTML的一部分)中,以维护Web页面中的控件和对象的状态
在内置的所有器控件中都是激活的
ViewState有时可能非常大,会影响整个页面大小,所以应考虑采用另一种方法来存储ViewState信息。可以从System.Web.UI.PageStatePersister类中派生一个类,重写它的Load和Save方法,来创建自己的保存机制
Text属性使用ViewState DEMO
在给ViewState添加数据时应该把数据打包到以下类型:
基本类型(Int32 Boolean等)
基本类型的数组
ArrayList......
CotrolState
2.0引进的。
基本上是只用于定制控件的私有ViewState,且关闭ViewState时不受影响
两个新方法 SaveViewState 和 LoadViewState 可以访问ControlState
在服务器控件中使用ControlState DEMO
引发PostBack事件
给服务器控件添加回送功能 DEMO
第二十六章 使用业务对象
第二十七章 建立和使用服务
第二十八章 本地化
查看asp.net线程的文化 DMEO
使用CultureInfo对象改变线程的文化设置 DEMO
服务器端 文化声明:
web.config.comments文件中<globalization>段 DEMO
web.config文件中定义的<globalization>段 DEMO
使用@page指令在页面级别上定义文化 [W27] UICulture="ru-RU" Culture="ru-RU"
客户端 文化声明:
把文化改为终端用户指定的首选文化
<%@ Page Langue="" UICulture="auto" Culture="auto" %>
使用自动检测功能,如果没有指定终端用户首先的文化,就使用指令指定的
<%@ Page Langue="" UICulture="auto:en-US" Culture="en-US" %>
在不同的文化中使用日期、时间值 DEMO
在不同的文化中使用数字 DEMO
在不同的文化中使用代币 DMEO
显示贷币时显示指定的文化 DEMO
在不同的文化中进行排序 SWMO
把文化改 DMEO
App_ Global Resources 不变的资源文件
直接在服务器控件中使用全局资源 DMEo
编程获取全局资源 DEMO
App_LocalResources本地资源 工具 生成本地资源 (只用在设计视图里)
使用工具自动生成本地化资源,并隐式的绑定到控件上,来实现页面的本地化是非常简单的,但存在以下几项问题:
1)必须为每个页生成多份资源文件;
2)只有控件属性中被标识为Localizable(true)才可能被工具扫描到;
3)由于是对页面包含的控件进行扫描,所以最好是在页面布局基本确定后再使用该工具,并且在编辑完 资源文件后不要再使用该工具,如果不幸你这样做了。。。会发现默认的资源文件被清空了
在后台编程时使用这两种资源
protected void Button1_Click(object sender, EventArgs e)
{
Localize1.Text = (String)GetLocalResourceObject("Label1Resource1.Text") + " " +
(String)GetGlobalResourceObject("LocalizedText", "Msg1");
}
记得添上这个引用
using System.Globalization;
第二十九章 配置
访问web.config配置
输出配置文件中所有数据库连接
根级的web.config文件使用的信任级别 DEMO trust level="Full"
改为中等信任级别 DEMO
allowOverride="false" 可以忽略这些继承或重写规则
ASP.NET 3.5 支持的 身份验证:
windows
Passport
Forms
联合使用Login控件和窗体身份验证 DEMO
FormsAuthentication.RedirectFromLoginPage
使用User.Identity
获取登录用户的用户名 string userName = User.Identity.Name;
检查用户是否已通过验证 bool authUser = User.Identity.IsAuthenticated();
使用AuthenticationType属性 string authType = User.Identity.AuthenticationType; [W28]
检查用户是否在某个角色中 User.IsInRole("ReutersServer/Subscribers")
两种授权:
URL授权
是URLAuthorizationModule(继承自 HttpModule )提供的一个服务,用于控制对.aspx文件等资源的访问
在<authorization>中允许或拒绝实体 DEMO
拒绝匿名用户 DMEO *表示所有的用户 ?表示匿名用户
get post方法拒绝用户和角色 DEMO verbs
File授权 location
把Documents子目录的访问权限授予Admin角色 DEMO
单个文件访问权限 DEMO
锁定配置设置
machine.config文件中的location段指定了路径Default Web Site/ExampleApplication ,允许所有的应用程序用allowOverride属性重写<trace>设置 DEMO
页面配置 page DEMO
include文件 DEMO configSource
配置ASP.NEt运行时设置 DEMO
完全限定的重定向URL useFullyQualifiedRedirectUrl
请求超时 executionTimeout
请求的最大的尺寸 maxRequestLength
缓存的上传 requestLengthDiskThreshold
线程管理 minFreeThreads minLocalRequestFreeThreads 保证线程可用数
输出调整缓存 enableKernelOutputCache
配置ASP.NEt辅助进程 processModel
存储与应用程序相关的设置 DMEO
操作远程服务器上的web.config DMEO
保护配置设置:
加密<connectionString>段
aspnet_regiis -pe "connectionString" -app "/EncryptionExample"
解密 aspnet_regiis -pd "connectionString" -app "/EncryptionExample"
加密<authentication>段
aspnet_regiis -pe "system.web/authentication" -app "/EncryptionExample"
创建定制段:
在web.config中创建自己的定制键-值对部分 DEMO
在web.config中设置自己的定制键-值对部分 DMEO
编程访问web.config中的定制段 DMEO
类似利用本地资源方法总结(与枚举一样利用)
个性化属性 DEMO
App_GlobalResources的全局资源 DEMO DEMO
应 用 程序设置
web.comfig中的设置 demo
使用web.co n fig中的设置 DEMO
App_LocalResources本地资源 工具 生成本地资源 (只用在设计视图里)
连接多个数据库
第三十章 测试
在浏览器中显示事件日志的内容 DEMO
管理工具 性能计数器
在浏览器查看性能计数器的值 DEMO
健康监控系统
缓冲web事件
第三十一章 管理
Application选项卡
管理应用程序设置
管理 SMTP 配置
管理跟踪和调试信息
应用程序状态: 联机
第三十二章 打包和部署asp.net应用程序
在部署之前 <compilation debug = "flase">
xcopy c:/Websites/Website1 z::'Websites/ /f /e /k /h
使用VS Copy Web Site选项
附录:
A 迁移asp.net项目
B asp.net终极工具
YSlow 雅虎的13规则
评测 器:dotTrace或ANTS 10天试用期
js最小化器 :Packer for .NET
ASPX Edit Helper 自动代码
Power Toys Pack Installer工具集
http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/
http://api.jquery.com/
Microsoft Ajax Minifier 4.0. [W1]
http://www.asp.net/ajaxlibrary/download.ashx
asp.net/MVC工具
整理代码: Refactor! for ASP.NET Code Style Enforcer
jquery代码智能提示功能。
首先读者需要下载一个补丁,地址如下:
http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.aspx?ReleaseId=1736
补丁安装好后,再下载jquery-1.2.6-vsdoc.js( http://jqueryjs.googlecode.com/files/jquery-1.2.6-vsdoc.js ) 文件,把它与jquery-1.2.6.js文件放在同一个文件夹下。最后在页面中与往常一样用<script>标签引入jQuery脚本 库,Visual Studio 2008会自动识别并找到jquery-1.2.6-vsdoc.js文件。
[W2]
如果我们更新了脚本, 可以通过"Ctrl+Shift+J"快捷方式更新Visual Studio的智能感知,或者单击 编辑->IntelliSense->更新JScript Intellisense:
为了即能在Visual Studio中增加脚本提示, 又能在上线的时候使用min版本的脚本库, 我们一般是用如下方式引入jQuery库: [W3]
Subversion SCC Provider
http://ankhsvn.open.collab.net/
将你的项目托管到google code或者sourceforge上,你可以使用这个Visual Studio插件连接你的项目。
MetalScroll
http://code.google.com/p/metalscroll/
MetalScroll是RockScroll插件的替代者。它用一个代码缩略图替换代码编辑器的滚动条。
Source Code Outliner Power Toy
http://www.codeplex.com/SourceCodeOutliner
是另外一个方便查看代码大纲的插件。如果使用Eclipse进行Java项目的开发,你可能习惯了Eclipse大纲显示的便捷性。这个插件实现了此特别有用的功能,它可以在一个窗口内显示类的成员信息,方便开发者查看和导航。
VS 2008 File Finder
http://www.huffs.us/blogEngine/page/VS-2008-File-Finder.aspx
在一个包含N个project的解决方案中查找一个文件时,使用这个插件相当有用。它提供一个窗口,可以快速的找到项目中的某个文件。类似Eclipse的Ctrl+Shift+R快捷键。
Clone Detective for Visual Studio
http://clonedetectivevs.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=16114
此插件可以分析项目中的代码,找到那些重复的代码。重复的代码不但冗余,而且一旦修改业务逻辑,多处代码也不好维护一致性。
ajaxmin test.js -o test.min.js
ajaxmin test.css -o test.min.css
< script type ="text/javascript" src ="scripts/jquery-1.2.6.js"></ script >
<% if ( false )
{ %>
< script type ="text/javascript" src ="scripts/jquery-1.2.6-vsdoc.js"></ script >
<% } %>
<% if (false)
{%>
<script src="Js/jquery-1.3.2.js" type="text/javascript"></script>
<script src="Js/jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
<%}%>
<%="<script src=/"Js/jquery-1.3.2.min.js/" type=/"text/javascript/"></script>" %>