1. Web命名空间
ü System.Web
Application、Browser、Cache、Cookies、Exception、Request、Response、Server和Trace对象。
ü System.Web.SessionState
Session对象。
ü System.Web.Services
WebService对象
ü System.Web.UI
Page和Control对象。
ü System.Web.UI.WebControls
所有服务器控件对象。
ü System.Web.UI.HTMLControls
所有HTML控件对象。
ü System.Web.Caching
Cache对象。
ü System.Web.Mail
MailMessage、MailAttachment和SmtpMail对象。
ü System.Web.Security
Authentication对象和模块。
在编写Web应用程序时,要直接处理两种类型的对象。
ü Application对象
派生自HttpApplication,在应用程序中定义驻留在Global.asax中
ü Web Form对象
派生自Page类,在应用程序中定义驻留在Web Form模块中。
Global和WebForm1对象是入口点,可以用它们来获得其他web对象,包括Request和Response,都是代码中经常用到的。
2. 使用Applicaton对象
Applicaton对象在web应用程序对象层次中是顶层的对象。可以使用Application对象来配置应用程序和保存状态信息。Application对象的属性和方法中提供了对应用程序中其他对象的访问。
ASP.NET启动应用程序时,自动实例化Global.asax中定义的Global对象。可以使用该对象来配置应用程序和初始化应用程序级的状态变量。
HttpApplication基类提供的属性和方法可以用来访问Global对象的从属对象。
属性/方法 | 用于 |
Application | 将数据项保存在Application状态中 |
Context | 为当前上下文获取Trace,Cache,Error和其他对象 |
Modules | 访问HTTP模版 |
Request | 读请求并从当前请求中获取Browser、ClientCertificates、Cookies和Files对象 |
Response | 将文本或数据写到响应中并从当前响应中获取Cache、Cookies和Output对象 |
Server | 处理请求和响应。Server对象为URL编码和解码提供了帮助方法 |
Session | 将数据项保存在Session状态中 |
User | 获取发出当前请求的用户的验证信息。在默认情况下Web应用程序允许匿名访问 |
3. 使用Page对象
该对象控制应用程序的用户界面。Page对象的方法和属性提供了对用户界面中其他对象的访问。当某个用户在您的应用程序中请求一个页面时,ASP.NET自动实例化web窗体并显示该页。
属性/方法 | 用于 |
Application | 在Application状态中保存数据项 |
Cache | 控制如何将响应缓存在服务器上 |
Controls | 获取页面上的控件 |
Request | 读请求并从当前请求中获取Browser、ClientCertificates、Cookies和Files对象 |
Response | 将文本或数据写到响应中,并从当前响应中获取Cache、Cookies和Output对象 |
Server | 处理请求和响应。Server对象为URL编码和解码提供了帮助方法 |
Session | 将数据项保存在Session状态中 |
Trace | 打开或关闭跟踪并写入跟踪日志 |
4. 使用Request对象
属性/方法 | 用于 |
Browser | 确定发出请求的浏览器的能力。Browser属性提供浏览器版本号,判定它是否为AOL浏览器,判定该浏览器是否支持cookie,并提供其他信息 |
ClientCertificates | 验证客户端 |
Cookies | 以cookie的形式获取客户端信息 |
Files | 获取客户端上载的文件 |
InputStream | 读写请求中发送的原始数据 |
5. 使用Response对象
使用Response对象来组成从服务器发送到客户端浏览器的响应。
属性/方法 | 用于 |
Cache | 决定服务器在将响应发送到客户端前如何缓存响应 |
Cookies | 设置发送给客户端的cookie的内容 |
Output | 获取或设置作为响应返回给客户端的原始数据 |
6. 维护状态信息
ASP.NET提供了以下方式在请求之间保持变量
ü 查询字符串
在请求和响应之间,将它们作为web地址的一部分来传递信息。
ü Cookie
将少量信息保存在客户端,客户端可能会拒绝cookie,应考虑。
ü ViewState
asp.net将添加到页面的ViewState属性中的项保存在页面的隐藏字段中。
ü Session状态
ü Application状态
使用:
ü 使用查询字符串:
Code1:
Server.Redirect(“webform1.aspx?Uname=Wombat”);
Code2:
Response.Write(Request.QueryString[“UName”]);
ü 使用cookie
Code1:
If(Request.Browser.Cookies)
{
HttpCookie cookUPrefs=new HttpCookie(“UPrefs”);
cookUPrefs.Value=”English”;
Response.Cookies.Add(cookUPrefs);
}
Code2:
If(Request.Browser.Cookies)
{
If(Request.Cookies[“UPrefs”])!=null
Session[“Lang”]=Request.Cookies[“UPrefs”].Value;
}
ü 使用ViewState
使用ViewState属性可以将数据保存到页面的字段中。因为ViewState将数据存储在页面上,所以只能用于能被序列化的项。
Code1:
ViewState.Add(ViewState.Count.ToString(),TextBox1.Text);
Code2:
Foreach(StateItem staItem in ViewState.Values)
{
Response.Write(staItem.Value.ToString());
}
ASP.NET为存储在页面上的隐藏数据编码。
ü 使用Application和Session状态
略。
7. 服务器控件和HTML控件
功能 | 服务器控件 | HTML控件 |
Server envents | 触发服务器上控件特有的事件 | 只能够触发服务器上页面级的事件 |
State management | 输入到控件中的数据在请求之间可以维持 | 数据不能维持,必须使用页面级的脚本来保存和恢复 |
Adaptation | 自动检测浏览器并调整到恰当的显示 | 没有自动适应功能,必须在代码中检测浏览器 |
Properties | .NET Framework为每个控件提供了一组属性。利用属性可以在服务器代码中改变控件的外观和行为 | 只有html属性 |
ü 不是所有的控件都需要服务器端的事件或状态管理
在进行数据绑定时,这点尤其正确。绑定项通常在每次请求时都会根据数据源来刷新,因此不维持绑定控件的状态信息会更加有效。这表明对于绑定的服务器控件您可以使用html控件或关闭状态管理。
ü 您可以完全控制服务器控件呈现的内容
8. ASP.NET的列表和表控件
控件 | 用于 |
ListBox | 在简单的可滚动列表格式中显示只读文本 |
DropDownList | 在简单的下拉列表中显示只读文本 |
Table | 在行和列中显示文本和控件。表控件允许使用TableRows和TableCells集合在代码中动态地生成表格 |
DataGrid | 使用可以控制外观的模板在行和列中显示文本和控件。DataGrid控件有内建的格式化、排序和分页能力 |
DataList | 使用控制外观的模板显示文本和控件行。DataList控件有内建的格式化和选择能力 |
Repeater | 使用控制外观的模板显示其他控件行。不包含DataGrid和DataList内建的能力 |
注意:当您使用服务器控件进行数据绑定时,可以关闭这个控件的状态管理。这样可以改善性能因为DataBind方法代替了asp.net提供的自动视图状态管理。
9. RadioButton、RadioButtonList、CheckBox、CheckBoxList
ü 可以使用Checked属性从CheckBox或RadioButton获取设置。
ü 要从RadioButtonList或CheckBoxList中获取或设置值,可以使用Foreach循环来检查列表中每个控件。RadioButtonList和CheckBoxList包含的表示CheckBox控件,而是List控件。要确定list控件的设置,可以使用Selected属性。如
foreach(ListItem lstItem in RadioButtonList1.Items)
{
If(lstItem.Selected)
Response.Write(“xxx”);
}
10. 显示图形和广告
显示图形:
ü 作为背景
ü 作为前景:Image控件
ü 作为按钮:ImageButton控件
ü 作为广告:AdRotator
Image控件不响应用户事件,但可以动态显示图形,只需要:
Image1.ImageUrl=”abc.jpg”;
AdRotator的使用:
1) 添加控件
2) 添加xml文件,指定targetSchema为AdRotatorScheduleFile
3) 添加广告tags
4) 设置控件的AdvertisementsFile属性为刚创建的xml文件
11. 从客户端获取文件
1) 将File Field HTML控件放到web窗体上
2) 在控件的右键菜单上选择Run As Server Control
3) 在窗体的html代码里添加Enctype属性
<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
4) 添加处理代码
string strFileName=fileUpload.PostedFile.FileName;//获取客户端完整文件名
strFileName=System.IO.Path.GetFileName(strFileName);//获得不包括路径的文件名
fileUpload.PostedFile.SaveAs(Request.MapPath(Request.ApplicationPath)+"//"+strFileName);
//Request.ApplicationPath返回虚拟目录,Request.MapPath方法映射为服务器本地路径
File Field HTML控件的PostedFile代表这个正在上传的文件。
12. 验证数据
客户验证由名为WebUIValidation.js的Jscript库提供。
验证控件 | 用于 |
RequiredFieldValidator | 检查控件是否包含数据 |
CompareValidator | 检查输入的项是否与另一个控件中的条目匹配 |
RangeValidator | 检查输入的项是否介于两个值之间 |
RegularExpressionValidator | 检查输入的项是否与指定的格式匹配 |
CustomValidator | 使用客户端脚本或服务器端脚本检查输入的有效性 |
ValidationSummary | 在中心位置显示验证错误或者显示常规的验证错误说明 |
注意:使用这些验证也必须提供一个触发回递事件的控件。
为了让用户取消验证,可以提供一个能设置Page_ValidationActive属性的Submit HTML控件:
<INPUT οnclick="Page_ValidationActive=false;" style="Z-INDEX: 114; LEFT: 232px; POSITION: absolute; TOP: 328px" type="submit" value="Submit">
上述按钮的定义取消了验证并将页面传回服务器。可以通过检查Page_Load事件过程中Page对象的IsValid属性来判断用户是否取消了这项操作。您必须重新验证该页面,因为取消验证时将把IsValid设置为true。
private void Page_Load(object sender, System.EventArgs e)
{
if(Page.IsPostBack)
{
Page.Validate();
if(!Page.IsValid) //用户取消了验证
Response.Redirect("default.htm");
}
}
13. 在窗体间导航
ASP.NET提供了5种在应用程序的页面间导航的不同方法
导航方法 | 用于 |
Hyperlink控件 | 导航到其他页面 |
Response.Redirect方法 | 在代码中导航到其他页面,等价于单击一个链接 |
Server.Transfer方法 | 结束当前web窗体开始执行一个新的web窗体。这个方法只在导航到asp.x页面时有用 |
Server.Execute方法 | 开始执行一个新的web窗体,同时仍然显示当前窗体。这个方法只在导航到asp.x页面时有用 |
Window.Open脚本方法 | 在客户端的一个新的浏览器窗口中显示页面 |
ü Hyperlink和Response.Redirect
Hyperlink服务器控件不公开任何服务器端的用户事件。
ü Transfer
Transfer能跨越多个请求维持源页面的一些信息。将Transfer方法的preserveForm参数设置为true可以使QueryString,ViewState和事件过程信息可以用于目标窗体上。
使用preserveForm参数设置为true的Transfer方法时,必须首先将web窗体的Page指令中的EnableViewStateMac属性设置为false。默认情况下asp.net散列ViewState信息,将该属性设置为false来禁止这种散列。
<%@ Page language=”C#” EnableViewStateMac=”false” ……%>
调用:
Server.Transfer(“Webform2.aspx”,true);
可以使用Request对象的Form方法从源Web窗体中获得ViewState信息。
ü 使用Execute方法
使用server对象的Execute方法时,无需离开第一个web窗体就可以处理第二个窗体。和使用Transfer方法一样,要将web窗体的EnableViewStateMac设置为false。
Private void butExecute_Click(Object sender,System.EventArgs e)
{
System.IO.StringWriter swrTarget=new System.IO.StringWriter();
Server.Execute(“Table.aspx”, swrTarget);
litTarget.Text=”<h2>Table Results</h2>”+ swrTarget.ToString();
}
其中第二个参数是可选的,如果省略,结果就被写到当前页面中。两个页面的服务器控件都能响应用户事件。注意任何发生在第二个web窗体的回递事件都会清除第一个窗体的内容。所以只有第二个web窗体不含触发回递事件的控件时,联合web窗体才比较有用。
ü 使用Window.Open方法