13COM.NET -=> 网页编程 -=> net专区 -=> 正文
      热门文章
      相关文章
·暂无
      推荐文章
 ·暂无
      
ASP.NET 教程
【字体:
作者:[tcconan] 来源:[13COM.NET收集整理] 浏览:[] 评论:[]
关键字:
ASP.NET 简介
.NET 是微软的 ASP 技术的最新版本。
您应当具备的基础知识
在继续学习之前,您需要对下面的知识有基本的了解:
  • WWW, HTML 以及网站构建的基础知识
  • 脚本语言 比如 JavaScript 或者 VBScript
  • 有关服务器脚本的基础知识
如果您希望首先学习这些项目,请在我们的首页访问这些教程。
什么是 ASP?
ASP 是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。
  • ASP 是一项微软公司的技术
  • ASP 指 Active Server Pages(动态服务器页面)
  • ASP 是运行于 IIS 之中的程序
  • IIS 指 Internet Information Services(因特网信息服务)
  • IIS 是 Windows 2000 捆绑的免费组件
  • IIS同时也是 Windows NT 4.0 的可选组件
  • 此可选组件可通过因特网下载
  • PWS 的体积更小 - 不过拥有 IIS 的完整功能
  • PWS 可在 Windows 95/98 的安装 CD 中找到
ASP 文件是什么?
  • ASP 文件和 HTML文件类似
  • ASP 文件可包含文本、HTML、XML 和脚本
  • ASP 文件中的脚本可在服务器上执行。
  • ASP 文件的扩展名是 ".asp"
它如何工作?
  • 当浏览器请求某个 HTML 文件时,服务器会返回这个文件
  • 而当浏览器请求某个 ASP 文件时,IIS 将这个请求传递至 ASP 引擎
  • ASP 引擎会逐行地读取这个文件,并执行文件中的脚本
  • 最后,ASP 文件将以纯 HTML 的形式返回到浏览器
什么是 ASP+?
ASP+ 等同于 ASP.NET。
ASP+ 是微软研发 ASP.NET 期间所使用的早期名称。
什么是 ASP.NET?
ASP 3.0 是 ASP 的最新版本,但不会再有 ASP 4.0 版本了。
ASP.NET 是下一代的 ASP,但是不能把 ASP.NET 称为 ASP 的升级版本。ASP.NET 是全新的服务器端 ASP 脚本。
ASP.NET 是 .NET 框架的组成部分。微软耗时三年从底层重写了 ASP.NET,而 ASP.NET 无法完全向后兼容 ASP 3.0。
您会在本教程的下一节了解到 ASP 与 ASP.NET 之间的差异所在。
.NET 框架(.NET Framework)
.NET 框架是微软 .NET 平台的基础结构。
.NET 框架是构建、开发及运行 Web 应用程序和 Web 服务的一种环境。
.NET 框架含有公共语言运行库和公共类库 - 比如 ADO.NET、ASP.NET 以及 Windows 窗体 - 来提供可整合入各种计算机系统的高级标准服务。
.NET 框架可提供特性丰富的应用程序环境、简化的开发以及众多开发语言之间的轻松整合。
.NET 框架中立于语言。目前,它支持 C++、C#、Visual Basic 以及 JScript(微软的 JavaScript 版本)。
微软的 Visual Studio.NET 是针对 NET Framework 的公共开发环境。
ASP 与 ASP.NET 之间的差异
ASP.NET 拥有更好的语言支持,一整套新的控件,基于 XML 的组件,以及更好的用户身份验证。
ASP.NET 通过允许编译的代码,提供了更强的性能。
ASP.NET 代码不完全向后兼容 ASP。
ASP.NET 的新特性
  • 更好的语言支持
  • 可编程的控件
  • 事件驱动的编程
  • 基于 XML 的组件
  • 用户身份验证,带有帐号和角色
  • 更高的可伸缩性
  • 更强的性能 - 编译代码
  • 更容易配置和开发
  • 不完全的 ASP 兼容
语言支持
ASP.NET 使用新的 ADO.NET。
ASP.NET 支持完整的 Visual Basic,而非 VBScript。
ASP.NET 支持 C# (C sharp) 和 C++。
ASP.NET 支持 JScript,和以前一样。
ASP.NET 控件
ASP.NET 包含大量 HTML 控件。几乎所有页面中的 HTML 元素都能被定义为 ASP.NET 控件,而这些控件都能由脚本控制。
ASP.NET 同时包含一系列新的面向对象的输入控件,比如可编程的列表框和验证控件。
新的 data grid 控件支持分类、数据分页,以及您对一个数据集控件所期待的一切。
事件驱动的控件
所有 Web 页面上的 ASP.NET 对象都能够发生可被 ASP.NET 代码处理的事件。
可由代码处理的加载、点击和更改事件使得编程更轻松,更有条理。
ASP.NET 组件
ASP.NET 组件深入地基于 XML。比如新的 AD Rotator,它使用 XML 来存储广告信息和配置。
用户身份验证
ASP.NET 支持基于表单的用户身份验证,包括 cookie 管理和自动的非授权登录重定向。
(您仍然能够定制自己的登陆页面和用户验证程序)。
User 帐户和角色
ASP.NET 允许用户帐户和角色,赋予每个用户(带有一个给定的角色)不同的服务器代码访问权限。
高可伸缩性
ASP.NET 在提供更大的可伸缩性方面已有非常多的改善。
服务器对服务器的通信已得到极大的增强,这使得在若干个服务器上按比例分配一个应用程序成为可能。关于这一点的一个例子是,我们有能力在不同的服务器上运行 XML 解析器、XSL 转换,甚至耗费资源的 session 对象。
编译代码
对服务器上 ASP.NET 页面的第一个请求是编译其 ASP.NET 代码,并在内存中保存一份缓存的备份。这样做的结果当然极大地提高了性能。
易于配置
通过纯文本文件就可完成对 ASP.NET 的配置。
配置文件可在应用程序运行时进行上传和修改。无需重起服务器。也没有 metabase 和注册方面的难题。
易于开发
不需要重起服务器来配置和替换已编译的代码。ASP.NET 会简单地把所有新的请求重定向到新的代码。
兼容性
ASP.NET 不完全兼容早期的 ASP 版本,所有大部分旧的 ASP 代码需要进行修改才能在 ASP.NET 下运行。
为了解决这个问题,ASP.NET 使用了一个新的文件后缀 ".aspx"。这样就使 ASP.NET 应用程序与 ASP 应用程序能够一起运行在同一个服务器上。
ASP.NET - Web 页面
一个简单的 ASP.NET 页面看上去类似一张普通的 HTML 页面。
Hello W3School
为了开始我们的 ASP.NET 学习之旅,首先我们将构造一张简单的 HTML 页面,这张页面将在浏览器中显示 "Hello W3School":
用 HTML 编写的 Hello W3School
这张 HTML 页面的 HTML 代码:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello W3School!</h2>
</center>
</body>
</html>
如果您希望亲自试一试,可以把这些代码保存在名为 "firstpage.html" 的文件中.
用 ASP.NET 编写的 Hello W3School
把 HTML 页面转换为 ASP.NET 的最简单的方法是,把这个 HTML 文件拷贝为带有 .aspx 后缀的新文件。
这些将把我们的例子显示为一个 ASP.NET 页面:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello W3School!</h2>
</center>
</body>
</html>
它如何工作?
从根本上讲,ASP.NET 页面与 HTML 完全相同。
HTML 页面的扩展名是 .htm 或 .html。假如浏览器从服务器请求某张 HTML 页面,服务器不进行任何修改,就会把该页面发往浏览器。
ASP.NET 页面的扩展名是 .aspx。如果浏览器请求某张 ASP.NET 页面,那么在把结果发回浏览器之前,服务器首先会处理页面中的可执行代码。
上面的 ASP.NET 页面不包含任何可执行的代码,因此也不会执行任何代码。在下面的例子中,我们将向页面添加一些可执行代码,以便向您演示静态 HTML 页面与动态 ASP 页面的不同之处。
经典的 ASP
Active Server Pages (ASP) 已经流行很多年了。通过 ASP,可以把可执行代码放置于 HTML 页面内部。
ASP.NET 之前的 ASP 版本经常被称为经典 ASP(Classic ASP)。
ASP.NET 不完全兼容 Classic ASP,但是通过少量的修改,Classic ASP 可以良好地作为 ASP.NET 进行工作。
用 Classic ASP 编写的动态页面
为了向您演示如何使用动态内容显示页面,我们向上面的例子添加了一些可执行代码:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello W3School!</h2>
<p><%Response.Write(now())%></p>
</center>
</body>
</html>
<% --%> 标签内的代码在服务器上执行。
Response.Write 是 ASP 代码,用来向 HTML 输出流文本。
Now() 是一个可返回服务器当前日期和时间的函数。
用 ASP .NET 编写的动态页面
下面的代码可把我们的例子显示为一个 ASP.NET 页面:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello W3School!</h2>
<p><%Response.Write(now())%></p>
</center>
</body>
</html>
ASP.NET vs Classic ASP
上面的例子无法展示出 ASP.NET 与 Classic
ASP.NET - 服务器控件
服务器控件是服务器可以理解的标签。
Classic ASP 的局限性
下面列出的代码是从上一节中拷贝的:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello W3School!</h2>
<p><%Response.Write(now())%></p>
</center>
</body>
</html>
上面的代码能够反映出 Classic ASP 的局限性:代码块必须放置在需要进行输出的位置。
通过 Classic ASP,我们是无法将可执行代码与 HTML 本身进行分离的。这使得页面难以阅读,也难以维护。
ASP.NET - 服务器控件
通过服务器控件,ASP.NET 已经解决了上面所描述的“意大利面条式代码”的问题。
服务器控件是可被服务器理解的标签。
有三种类型的服务器控件:
•  HTML 服务器控件 - 传统的 HTML 标签
•  Web 服务器控件 - 新的 ASP.NET 标签
•  Validation 服务器控件 - 用于输入验证
ASP.NET - HTML 服务器控件
HTML 服务器控件是服务器可理解的 HTML 标签。
ASP.NET 中的 HTML 元素是作为文本来进行处理的。要想使这些元素可编程,就需要向这些 HTML 元素添加 runat="server" 属性。该属性指示,此元素是一个服务器控件。同时要添加 id 属性来标识该服务器控件。id 引用可用于操作运行时的服务器控件。
注释:所有 HTML 服务器控件必须位于带有 runat="server" 属性的 <form> 标签内。runat="server" 属性指示该表单应在服务器进行处理。它同时指示其包括在内的控件可被服务器脚本访问。
在下面的例子中,我们在 .aspx 文件中声明了一个 HtmlAnchor 服务器控件。然后我们在一个事件句柄中操作该 HtmlAnchor 控件的 HRef 属性。Page_Load 事件是众多 ASP.NET 可理解的事件中的一种类型:
注释:事件句柄(event handler)是一种针对给定事件执行代码的子例程。
<script runat="server">
Sub Page_Load
link1.HRef="http://www.w3school.com.cn"
End Sub
</script>
 
<html>
<body>
 
<form runat="server">
<a id="link1" runat="server">Visit W3School!</a>
</form>
 
</body>
</html>
提示:可执行代码本身已被移到 HTML 之外了。
ASP.NET - Web 服务器控件
Web 服务器控件是服务器可理解的特殊 ASP.NET 标签。
类似 HTML 服务器控件,Web 服务器控件也在服务器上创建,它们同样需要 runat="server" 属性以使其生效。不过,Web 服务器控件没有必要映射任何已存在的 HTML 元素,它们代表更复杂的元素。
创建 Web 服务器控件的语法是:
<asp:control_name id="some_id" runat="server" />
在下面的例子中,我们在 .aspx 文件中的声明了一个 Button 服务器控件。然后我们为 Click 事件创建了一个事件句柄,它可修改按钮上的文本:
<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="You clicked me!"
End Sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:Button id="button1" Text="Click me!" runat="server" OnClick="submit"/>
</form>
 
</body>
</html>
ASP.NET - Validation 服务器控件
Validation 服务器控件用于验证用户输入。如果用户输入没有通过验证,将给用户显示一条错误消息。
每种 validation 控件执行一种特定的验证类型(比如验证某个具体的值或者某个范围的值)。
默认地,当点击 Button, ImageButton 或 LinkButton 时,页面验证才会被执行。您可通过把 CausesValidation 属性设置为 false,来阻止某个按钮控件被点击时进行验证。
创建 Validation 服务器控件的语法是:
<asp:control_name id="some_id" runat="server" />
在下面的例子中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,以及一个 RangeValidator 控件。如果验证失败,文本 "The value must be from 1 to 100!" 将显示在 RangeValidator 控件中:
<html>
<body>
<form runat="server">
 
<p>Enter a number from 1 to 100:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button Text="Submit" runat="server" />
</p>
 
<p>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
Text="The value must be from 1 to 100!"
runat="server" />
</p>
 
</form>
</body>
</html>
ASP.NET - 事件
•Previous Page
•Next Page
事件句柄(event handler)是一种针对给定事件来执行代码的子例程。
ASP.NET - 事件句柄
请看下面的代码:
<%
lbl1.Text="The date and time is " & now()
%>
 
<html>
<body>
<form runat="server">
<h3><asp:label id="lbl1" runat="server" /></h3>
</form>
</body>
</html>
上面的代码什么时候会被执行?答案是:“我不知道. . .”
Page_Load 事件
Page_Load 事件是众多 ASP.NET 可理解的事件之一。Page_Load 事件会在页面加载时被触发,然后 ASP.NET 会自动调用子例程 Page_Load,并执行其中的代码:
<script runat="server">
Sub Page_Load
lbl1.Text="The date and time is " & now()
End Sub
</script>
 
<html>
<body>
<form runat="server">
<h3><asp:label id="lbl1" runat="server" /></h3>
</form>
</body>
</html>
注释:该 Page_Load 事件不包含对象引用或事件参数!
TIY
Page.IsPostBack 属性
Page_Load 子例程会在页面每次加载时运行。如果您仅希望在页面第一次加载时执行 Page_Load 子例程中的代码,您可以使用 Page.IsPostBack 属性。如果 Page.IsPostBack 属性为 false,则页面第一次被载入,如果为 true,则页面传回服务器(例如,通过点击表单上的按钮):
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  lbl1.Text="The date and time is " & now()
end if
End Sub
 
Sub Submit(s As Object, e As EventArgs)
lbl2.Text="Hello World!"
End Sub
</script>
 
<html>
<body>
<form runat="server">
<h3><asp:label id="lbl1" runat="server" /></h3>
<h3><asp:label id="lbl2" runat="server" /></h3>
<asp:button text="Submit" onclick="submit" runat="server" />
</form>
</body>
</html>
上面的例子仅在页面初次加载时创建 "The date and time is...." 这条消息。当用户点击 Submit 按钮时,submit 子例程将在第二个 label 创建 "Hello World!",但第一个 label 中的日期和时间不会改变。
ASP.NET Web 窗体
•Previous Page
•Next Page
所有服务器控件必须出现在 <form> 标签内,同时 <form> 标签必须包含 runat="server" 属性。
ASP.NET Web 表单
所有服务器控件必须出现在 <form> 标签内,同时 <form> 标签必须包含 runat="server" 属性。runat="server" 属性指示该表单必须在服务器进行处理。它还指示装入其中的控件能否被服务器脚本访问:
<form runat="server">...HTML + server controls</form>
注释:该表单总是向自身页面进行提交。如果您规定了一个 action 属性,它会被忽略。如果您省略了 method 属性,它将被默认地设置为 method="post"。同时,如果您没有规定 name 和 id 属性,它们则由 ASP.NET 自动分配。
注释:一个 .aspx 仅能包含一个 <form runat="server"> 控件!
如果您查看一个 .aspx 页面的源代码,而其中包含的表单不带有 name, method, action 或 id 属性,那么您将看到 ASP.NET 已经把这些属性添加到该表单。类似这样:
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">...some code</form>
提交表单
表单通常通过点击一个按钮来提交。ASP.NET 中的 Button 服务器控件的格式是这样的:
<asp:Button id="id" text="label" OnClick="sub" runat="server" />
id 属性为按钮定义了一个唯一的名称,而 text 属性则为按钮分配了一个 label。onClick 事件句柄规定了一个要执行的子例程。
在下面的例子中,我们在一个 .aspx 文件中声明了一个按钮控件。一次鼠标单击就可以运行一个子例程,可以更改该按钮上的文本。
ASP.NET - 维持 ViewState
•Previous Page
•Next Page
通过在 Web 表单中维持对象的 ViewState (视图状态),您可以省去大量的编码工作。
维持 ViewState (视图状态)
当 classic ASP 中的表单被提交时,所有的表单值都会被清空。设想一下,您提交了一张带有大量信息的表单,而服务器返回了一个错误。您将不得不返回表单,然后更正其中的信息。您点击后退按钮,然后会发生什么呢... 所有的表单值都被清空了,而您将不得不重新开始所有的一切。站点不会维持您的 ViewState。
当 ASP .NET 中的表单被提交时,表单会随所有表单值一同重新出现。如何做到的呢?这是由于 ASP .NET 维持了您的 ViewState。ViewState 会在页面被提交到服务器时指示其状态。通过在每张页面中的一个 <form runat="server"> 控件中放置一个隐藏域,我们就可以定义页面的状态了。源代码可能类似这样:
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
 
.....some code
 
</form>
维持 ViewState 是 ASP.NET Web 表单的默认设置。如果您不希望维持 ViewState,请在 .aspx 页面的顶部包含指令: <%@ Page EnableViewState="false" %>,或为任意控件添加属性:EnableViewState="false"。
请看下面的 .aspx 文件。它演示了老的运行方式。当您单击提交按钮时,表单值就会消失:
<html>
<body>
 
<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>
 
</body>
</html>
TIY
这是新的 ASP .NET 方式。当您点击提交按钮时,表单值不会消失:
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
 
<html>
<body>
 
<form runat="server">
Your name: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
TIY (请在右边的框架中点击“查看原文档”,您可以看到 ASP .NET 已经向表单中添加了一个隐藏域,这样就可以维持 ViewState。)
ASP .NET - TextBox 控件
•Previous Page
•Next Page
TextBox 控件用于创建用户可输入文本的文本框。
TextBox 控件
TextBox 控件用于创建用户可输入文本的文本框。
TextBox 控件的属性列在我们的 TextBox 控件参考手册中。
下面的例子演示了您可能在 TextBox 控件中使用到的一些属性:
TIY
<html>
<body>
 
<form runat="server">
 
A basic TextBox:
<asp:TextBox id="tb1" runat="server" />
<br /><br />
 
A password TextBox:
<asp:TextBox id="tb2" TextMode="password" runat="server" />
<br /><br />
 
A TextBox with text:
<asp:TextBox id="tb4" Text="Hello World!" runat="server" />
<br /><br />
 
A multiline TextBox:
<asp:TextBox id="tb3" TextMode="multiline" runat="server" />
<br /><br />
 
A TextBox with height:
<asp:TextBox id="tb6" rows="5" TextMode="multiline"
runat="server" />
<br /><br />
 
A TextBox with width:
<asp:TextBox id="tb5" columns="30" runat="server" />
 
</form>
 
</body>
</html>
添加脚本
当表单被提交时,TextBox 控件的内容和设置可通过服务器脚本进行修改。可通过点击一个按钮或当用户更改 TextBox 控件中的值对表单进行提交。
在下面的例子中,我们在一个 .aspx 文件中声明了一个 TextBox 控件、一个 Button 控件和一个 Label 控件。当提交按钮被触发时,submit 子例程就会被执行。submit 子例程会向 Label 控件写一条文本:
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Your name is " & txt1.Text
End Sub
</script>
 
<html>
<body>
 
<form runat="server">
Enter your name:
<asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
TIY
在下面的例子中,我们在一个 .aspx 文件中声明了一个 TextBox 控件和一个 Label 控件。当您更改了 TextBox 中的值,并且在 TextBox 外单击时,change 子例程就会被执行。change 子例程会向 Label 控件写一条文本:
<script runat="server">
Sub change(sender As Object, e As EventArgs)
lbl1.Text="You changed text to " & txt1.Text
End Sub
</script>
 
<html>
<body>
 
<form runat="server">
Enter your name:
<asp:TextBox id="txt1" runat="server"
text="Hello World!"
ontextchanged="change" autopostback="true"/>
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
ASP.NET - Button 控件
•Previous Page
•Next Page
Button 控件用于显示一个按钮。
Button 控件
Button 控件用于显示一个按钮。按钮可以是提交按钮或命令按钮,而该控件是一个提交按钮。
submit 按钮没有命令名称,当它被点击时,它把页面传回服务器。可以编写一些事件句柄,在提交按钮被点击时来控制动作的执行。
command 按钮拥有命名名称,且允许你在页面上创建多个 Button 控件。可以编写一些事件句柄,在 command 按钮被点击时来控制动作的执行。
Button 控件的属性列在我们的 Button 控件参考手册中。
下面的例子演示了一个简单的 Button 控件:
<html>
<body>
 
<form runat="server">
<asp:Button id="b1" Text="Submit" runat="server" />
</form>
 
</body>
</html>
添加脚本
表单通常通过点击按钮进行提交。
在下面的例子中,我们在 .aspx 文件中声明了一个 TextBox 控件、一个 Button 控件以及一个 Label 控件。当这个提交按钮被点击时,submit 子例程就会被执行。该 submit 子例程会向 Label 控件写一条文本:
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Your name is " & txt1.Text
End Sub
</script>
 
<html>
<body>
 
<form runat="server">
Enter your name:
<asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
ASP.NET - 数据绑定
•Previous Page
•Next Page
我们可以使用数据绑定(Data Binding)来完成带有可选项目的列表,这些可选项目来自某个导入的数据源,比如数据库、XML 文件或脚本。
数据绑定
下面的控件是支持数据绑定的列表控件:
•  asp:RadioButtonList
•  asp:CheckBoxList
•  asp:DropDownList
•  asp:Listbox
通常在一个或多个 asp:ListItem 控件中定义以上每个控件中的可选项目,类似这样:
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="countrylist" runat="server">
<asp:ListItem value="C" text="China" />
<asp:ListItem value="S" text="Sweden" />
<asp:ListItem value="F" text="France" />
<asp:ListItem value="I" text="Italy" />
</asp:RadioButtonList>
</form>
 
</body>
</html>
不过,我们可以使用某种独立的源进行数据绑定,比如数据库、XML 文件或脚本来完成带有可选项目的列表。
通过使用导入的源,数据从 HTML 分离了出来,并且对项目的任何改变都是在独立的数据源中完成的。
在下面的三节中,我们将描述如何从脚本化的数据源中绑定数据。
ASP NET - ArrayList 对象
•Previous Page
•Next Page
ArrayList 对象是包含单一数据值的项目的集合。
实例
例子 1 - ArrayList RadioButtonList
例子 2 - ArrayList DropDownList
创建 ArrayList
ArrayList 对象是包含单一数据值的项目的集合。
通过 Add() 方法向 ArrayList 添加项目。
下面的代码创建了一个新的 ArrayList 对象,名为 mycountries,并添加了四个项目:
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New ArrayList
  mycountries.Add("China")
  mycountries.Add("Sweden")
  mycountries.Add("France")
  mycountries.Add("Italy")
end if
end sub
</script>
默认地,一个 ArrayList 对象包含 16 个条目。可通过 TrimToSize() 方法把 ArrayList 调整为最终尺寸:
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New ArrayList
  mycountries.Add("China")
  mycountries.Add("Sweden")
  mycountries.Add("France")
  mycountries.Add("Italy")
  mycountries.TrimToSize()
end if
end sub
</script>
通过 Sort() 方法,ArrayList 也能够按照字母顺序或者数字顺序进行排序:
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New ArrayList
  mycountries.Add("China")
  mycountries.Add("Sweden")
  mycountries.Add("France")
  mycountries.Add("Italy")
  mycountries.TrimToSize()
  mycountries.Sort()
end if
end sub
</script>
要实现颠倒的排序,请在 Sort() 方法后应用 Reverse() 方法:
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New ArrayList
  mycountries.Add("China")
  mycountries.Add("Sweden")
  mycountries.Add("France")
  mycountries.Add("Italy")
  mycountries.TrimToSize()
  mycountries.Sort()
  mycountries.Reverse()
end if
end sub
</script>
把数据绑定到 ArrayList
ArrayList 对象可向下面这些控件自动地生成文本和值:
•  asp:RadioButtonList
•  asp:CheckBoxList
•  asp:DropDownList
•  asp:Listbox
如需把数据绑定到一个 RadioButtonList 控件,首先请在一个 .aspx 页面中创建 RadioButtonList 控件(请注意,没有任何 asp:ListItem 元素):
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" />
</form>
 
</body>
</html>
然后添加构建列表的脚本,并把列表中的值绑定到该 RadioButtonList 控件:
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New ArrayList
  mycountries.Add("China")
  mycountries.Add("Sweden")
  mycountries.Add("France")
  mycountries.Add("Italy")
  mycountries.TrimToSize()
  mycountries.Sort()
  rb.DataSource=mycountries
  rb.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" />
</form>
 
</body>
</html>
RadioButtonList 控件的 DataSource 属性被设置为该 ArrayList,它定义了这个 RadioButtonList 控件的数据源。RadioButtonList 控件的 DataBind() 方法把 RadioButtonList 控件与数据源绑定在一起。
注释:数据值作为控件的 Text 和 Value 属性来使用。如需添加不同于 Text 的 Value,既可以使用 Hashtable 对象,也可以使用 SortedList 对象。
ASP.NET - Hashtable 对象
•Previous Page
•Next Page
Hashtable 对象包含用键/值对表示的项目。
实例
例子 1 - Hashtable RadioButtonList
例子 2 - Hashtable RadiobuttonList
例子 3 - Hashtable DropDownList
创建 Hashtable
Hashtable 对象包含用键/值对表示的项目。键被用作索引,通过搜索其键,可以实现对值的快速搜索。
通过 Add() 方法向 Hashtable 添加项目。
下面的代码创建一个名为 mycountries 的 Hashtable,并添加了四个元素:
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New Hashtable
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
end if
end sub
</script>
数据绑定
Hashtable 对象可为下面这些控件自动地生成文本和值:
•  asp:RadioButtonList
•  asp:CheckBoxList
•  asp:DropDownList
•  asp:Listbox
如需把数据绑定到某个 RadioButtonList 控件,首先请在一个 .aspx 页面中创建 RadioButtonList 控件(没有任何 asp:ListItem 元素)
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
 
</form>
 
</body>
</html>
然后添加构建列表的脚本:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New Hashtable
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
  rb.DataSource=mycountries
  rb.DataValueField="Key"
  rb.DataTextField="Value"
  rb.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>
 
</body>
</html>
然后我们添加一个子例程,该例程会在用户点击 RadioButtonList 控件中的某个项目时被执行。当某个单选按钮被点击,label 中会出现一条文本:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New Hashtable
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
  rb.DataSource=mycountries
  rb.DataValueField="Key"
  rb.DataTextField="Value"
  rb.DataBind()
end if
end sub
 
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
注释:您无法选择添加到 Hashtable 的项目的排序方式。如需对项目进行字母排序或数字排序,请使用 SortedList 对象。
ASP.NET - SortedList 对象
•Previous Page
•Next Page
SortedList 对象兼有 ArrayList 和 Hashtable 对象的特性。
实例
例子 1 - SortedList RadioButtonList
例子 2 - SortedList RadiobuttonList
例子 3 - SortedList DropDownList
SortedList 对象
SortedList 对象包含用键/值对表示的项目。SortedList 对象可按照字符顺序或数字顺序自动地对项目进行排序。
通过 Add() 方法向 SortedList 添加项目。SortedList 可通过 TrimToSize() 方法调整为最终尺寸。
下面的代码创建了一个名为 mycountries 的 SortedList,并添加了四个元素:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New SortedList
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
end if
end sub
</script>
数据绑定
SortedList 对象可自动地为下面的控件生成文本和值:
•  asp:RadioButtonList
•  asp:CheckBoxList
•  asp:DropDownList
•  asp:Listbox
如需把数据绑定到 RadioButtonList 控件,首先请在 aspx 文件中创建一个 RadioButtonList 控件(没有任何 asp:ListItem 元素):
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
 
</form>
 
</body>
</html>
然后添加构建列表的脚本:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New SortedList
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
  rb.DataSource=mycountries
  rb.DataValueField="Key"
  rb.DataTextField="Value"
  rb.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
 
</form>
 
</body>
</html>
然后我们添加一个子例程,该子例程会在用户点击 RadioButtonList 控件中的项目时执行。当单选按钮被点击时,文本将出现在 label 中:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New SortedList
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
  rb.DataSource=mycountries
  rb.DataValueField="Key"
  rb.DataTextField="Value"
  rb.DataBind()
end if
end sub
 
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
ASP .NET - XML 文件
•Previous Page
•Next Page
我们可以把 XML 文件绑定到列表控件。
实例
例子 1 - XML RadiobuttonList
一个 XML 文件
这里有一个名为 "countries.xml" 的 XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<countries>
 
<country>
<text>China</text>
<value>C</value>
</country>
 
<country>
<text>Sweden</text>
<value>S</value>
</country>
 
<country>
<text>France</text>
<value>F</value>
</country>
 
<country>
<text>Italy</text>
<value>I</value>
</country>
 
</countries>
请查看该文件:countries.xml
把 DataSet 绑定到 List 控件
首先,导入 "System.Data" 命名空间。我们需要该命名空间与 DataSet 对象一起工作。把下面这条指令包含在 .aspx 页面的顶部:
<%@ Import Namespace="System.Data" %>
接下来,为这个 XML 文件创建一个 DataSet,并在页面首先加载时把这个 XML 文件载入该 DataSet:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New DataSet
  mycountries.ReadXml(MapPath("countries.xml"))
end if
end sub
如需把该 DataSet 绑定到 RadioButtonList 控件,首先请在 .aspx 页面中创建一个 RadioButtonList 控件(没有任何 asp:ListItem 元素):
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" />
</form>
 
</body>
</html>
然后添加构建这个 XML DataSet 的脚本:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New DataSet
  mycountries.ReadXml(MapPath("countries.xml"))
  rb.DataSource=mycountries
  rb.DataValueField="value"
  rb.DataTextField="text"
  rb.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
</form>
 
</body>
</html>
然后,我们添加一个子例程,该子例程会在用户点击 RadioButtonList 控件中的项目时执行。当用户点击某个单选按钮时,label 中会出现一条文本:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycountries=New DataSet
  mycountries.ReadXml(MapPath("countries.xml"))
  rb.DataSource=mycountries
  rb.DataValueField="value"
  rb.DataTextField="text"
  rb.DataBind()
end if
end sub
 
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>
 
</body>
</html>
ASP.NET - Repeater 控件
•Previous Page
•Next Page
Repeater 控件用于显示重复的项目列表,这些项目被限制在该控件。
实例
Repeater 控件
带有 <AlternatingItemTemplate> 的 Repeater 控件
带有 <SeparatorTemplate> Repeater 控件
把 DataSet 绑定到 Repeater 控件
Repeater 空间用于显示重复的项目列表,这些项目被限制在该控件。Repeater 控件可被绑定到数据库表、XML 文件或者其他项目列表。这里,我们将展示如何把 XML 文件绑定到一个 Repeater 控件。
我们将在例子中使用下面的 XML 文件("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
</catalog>
请查看该 XML 文件:cdcatalog.xml
首先,导入 "System.Data" 命名空间。我们需要此命名空间与 DataSet 对象一同工作。在 .aspx 页面的顶部包含下面这条指令:
<%@ Import Namespace="System.Data" %>
接下来,为这个 XML 文件创建一个 DataSet,并把此 XML 文件在页面首次加载时载入 DataSet:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub
然后我们在 .aspx 页面中创建一个 Repeater 控件。<HeaderTemplate> 元素中的内容在输出中仅出现一次,而 <ItemTemplate> 元素的内容会对应 DataSet 中的 "record" 重复出现,最后,<FooterTemplate> 的内容在输出中仅出现一次:
<html>
<body>
 
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
 
<HeaderTemplate>
...
</HeaderTemplate>
 
<ItemTemplate>
...
</ItemTemplate>
 
<FooterTemplate>
...
</FooterTemplate>
 
</asp:Repeater>
</form>
 
</body>
</html>
然后我们添加可创建 DataSet 的脚本,并把这个 mycdcatalog DataSet 绑定到 Repeater 控件。我们同样用 HTML 标签来填充这个 Repeater 控件,并通过 <%#Container.DataItem("fieldname")%> 方法把数据项目绑定到 <ItemTemplate> 部分内的单元格:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
  cdcatalog.DataSource=mycdcatalog
  cdcatalog.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
 
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>
 
<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</ItemTemplate>
 
<FooterTemplate>
</table>
</FooterTemplate>
 
</asp:Repeater>
</form>
 
</body>
</html>
使用 <AlternatingItemTemplate>
您可以在 <ItemTemplate> 元素后添加 <AlternatingItemTemplate> 元素,这样就可以描述交替行的外观了。在下面的例子中,该表格中每隔一行就会显示为浅灰色的背景:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
  cdcatalog.DataSource=mycdcatalog
  cdcatalog.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
 
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>
 
<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</ItemTemplate>
 
<AlternatingItemTemplate>
<tr bgcolor="#e8e8e8">
 
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</AlternatingItemTemplate>
 
<FooterTemplate>
</table>
</FooterTemplate>
 
</asp:Repeater>
</form>
 
</body>
</html>
使用 <SeparatorTemplate>
<SeparatorTemplate> 元素能够用于描述每个记录之间的分隔符。下面的例子在每个表格行之间插入了一条水平线:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
  cdcatalog.DataSource=mycdcatalog
  cdcatalog.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
 
<HeaderTemplate>
<table border="0" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>
 
<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</ItemTemplate>
 
<SeparatorTemplate>
<tr>
<td colspan="6"><hr /></td>
</tr>
</SeparatorTemplate>
 
<FooterTemplate>
</table>
</FooterTemplate>
 
</asp:Repeater>
</form>
 
</body>
</html>
ASP.NET - DataList 控件
•Previous Page
•Next Page
DataList 控件,类似于 Repeater 控件,用于显示限制于该控件的项目的重复列表。不过,DataList 控件会默认地在数据项目上添加表格。
实例
DataList 控件
带有样式的 DataList 控件
带有 <AlternatingItemTemplate> 的 DataList 控件
把 DataSet 绑定到 DataList 控件
DataList 控件,类似于 Repeater 控件,用于显示限制于该控件的项目的重复列表。不过,DataList 控件会默认地在数据项目上添加表格。DataList 控件可被绑定到数据库表、XML 文件或者其他项目列表。这里,我们将展示如何把 XML 文件绑定到一个 DataList 控件。
我们将在例子中使用下面的 XML 文件 ("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
</catalog>
请查看该 XML 文件:cdcatalog.xml
首先,导入 "System.Data" 命名空间。我们需要此命名空间与 DataSet 对象一同工作。在 .aspx 页面的顶部包含下面这条指令:
<%@ Import Namespace="System.Data" %>
接下来,为这个 XML 文件创建一个 DataSet,并把此 XML 文件在页面首次加载时载入 DataSet:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub
然后我们在 .aspx 页面中创建一个 DataList 控件。<HeaderTemplate> 元素中的内容在输出中仅出现一次,而 <ItemTemplate> 元素的内容会对应 DataSet 中的 "record" 重复出现,最后,<FooterTemplate> 的内容在输出中仅出现一次:
<html>
<body>
 
<form runat="server">
<asp:DataList id="cdcatalog" runat="server">
 
<HeaderTemplate>
...
</HeaderTemplate>
 
<ItemTemplate>
...
</ItemTemplate>
 
<FooterTemplate>
...
</FooterTemplate>
 
</asp:DataList>
</form>
 
</body>
</html>
然后我们添加可创建 DataSet 的脚本,并把这个 mycdcatalog DataSet 绑定到 DataList 控件。我们同样使用这些元素来填充该 DataList 控件:包含表头的 <HeaderTemplate>,包含要显示的数据项的 <ItemTemplate>,以及包含文本的 <FooterTemplate>。请注意,DataList 的 gridlines 属性被设置为 "both",以显示表格边框:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
  cdcatalog.DataSource=mycdcatalog
  cdcatalog.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:DataList id="cdcatalog"
gridlines="both" runat="server">
 
<HeaderTemplate>
My CD Catalog
</HeaderTemplate>
 
<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
 
<FooterTemplate>
Copyright w3school.com.cn
</FooterTemplate>
 
</asp:DataList>
</form>
 
</body>
</html>
使用样式
您也可以向 DataList 控件添加样式,让它更加时髦:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
  cdcatalog.DataSource=mycdcatalog
  cdcatalog.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:DataList id="cdcatalog"
runat="server"
cellpadding="2"
cellspacing="2"
borderstyle="inset"
backcolor="#e8e8e8"
width="100%"
headerstyle-font-name="Verdana"
headerstyle-font-size="12pt"
headerstyle-horizontalalign="center"
headerstyle-font-bold="true"
itemstyle-backcolor="#778899"
itemstyle-forecolor="#ffffff"
footerstyle-font-size="9pt"
footerstyle-font-italic="true">
 
<HeaderTemplate>
My CD Catalog
</HeaderTemplate>
 
<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
 
<FooterTemplate>
Copyright w3school.com.cn
</FooterTemplate>
 
</asp:DataList>
</form>
 
</body>
</html>
使用 <AlternatingItemTemplate>
您可以在 <ItemTemplate> 元素后添加 <AlternatingItemTemplate> 元素,这样就可以描述交替行的外观了。您可以在 DataList 控件内部对 <AlternatingItemTemplate> 部分的数据进行样式化处理:
<%@ Import Namespace="System.Data" %>
 
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:DataList id="cdcatalog"
runat="server"
cellpadding="2"
cellspacing="2"
borderstyle="inset"
backcolor="#e8e8e8"
width="100%"
headerstyle-font-name="Verdana"
headerstyle-font-size="12pt"
headerstyle-horizontalalign="center"
headerstyle-font-bold="True"
itemstyle-backcolor="#778899"
itemstyle-forecolor="#ffffff"
alternatingitemstyle-backcolor="#e8e8e8"
alternatingitemstyle-forecolor="#000000"
footerstyle-font-size="9pt"
footerstyle-font-italic="True">
 
<HeaderTemplate>
My CD Catalog
</HeaderTemplate>
 
<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
 
<AlternatingItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</AlternatingItemTemplate>
 
<FooterTemplate>
&copy; w3school.com.cn
</FooterTemplate>
 
</asp:DataList>
</form>
 
</body>
</html>
ASP.NET - 数据库连接
•Previous Page
•Next Page
ADO.NET 同样是 .NET 框架的组成部分。ADO.NET 的职能是处理数据访问。通过 ADO.NET,您就可以操作数据库了。
实例
数据库连接 - 绑定到 Repeater 控件
数据库连接 - 绑定到 DataList 控件
什么是 ADO.NET?
•  ADO.NET 是 .NET 框架的组成部分
•  ADO.NET 由一系列用于操作数据访问的类组成
•  ADO.NET 完全基于 XML
•  ADO.NET 没有 Recordset 对象,这一点与 ADO 不同
创建数据库连接
我们计划使用曾经使用过的 Northwind 数据库。
首先,导入命名空间 "System.Data.OleDb"。我们需要该命名空间,以便可以操作 Microsoft Access 以及其他的 OLE DB 数据库提供者。我们将在 Page_Load 子例程中创建对此数据库的连接。我们创建了一个 dbconn 变量,并把新的 OleDbConnection 类赋值给这个变量,这个 OleDbConnection 类带有一个连接字符串,可以指示 OLE DB 以及数据库的位置。然后我们打开此数据库连接:
<%@ Import Namespace="System.Data.OleDb" %>
 
<script runat="server">
sub Page_Load
dim dbconn
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
end sub
</script>
注释:这个连接字符串必须是没有折行的连续字符串!
创建数据库命令
为了指定需从数据库取回的记录,我们将创建一个 dbcomm 变量,并为其赋值一个新的 OleDbCommand。这个 OleDbCommand 类用于发出针对数据库表的 SQL 查询:
<%@ Import Namespace="System.Data.OleDb" %>
 
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
end sub
</script>
创建 DataReader
OleDbDataReader 类用于从数据源中读取记录流。通过调用 OleDbCommand 对象的 ExecuteReader 方法,就可以创建 DataReader:
<%@ Import Namespace="System.Data.OleDb" %>
 
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
end sub
</script>
绑定到 Repeater 控件
然后,我们把这个 DataReader 绑定到一个 Repeater 控件:
<%@ Import Namespace="System.Data.OleDb" %>
 
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()
end sub
</script>
 
<html>
<body>
 
<form runat="server">
<asp:Repeater id="customers" runat="server">
 
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Companyname</th>
<th>Contactname</th>
<th>Address</th>
<th>City</th>
</tr>
</HeaderTemplate>
 
<ItemTemplate>
<tr>
<td><%#Container.DataItem("companyname")%></td>
<td><%#Container.DataItem("contactname")%></td>
<td><%#Container.DataItem("address")%></td>
<td><%#Container.DataItem("city")%></td>
</tr>
</ItemTemplate>
 
<FooterTemplate>
</table>
</FooterTemplate>
 
</asp:Repeater>
</form>
 
</body>
</html>
关闭数据库连接
在不在需要访问数据库后,请记得始终将 DataReader 和数据库连接关闭:
dbread.Close()
dbconn.Close()
ASP.NET 2.0 - 新特性
•Previous Page
•Next Page
通过增加若干新的特性,ASP.NET 2.0 对 ASP.NET 进行了改进。
ASP.NET 2.0 , 中的改进
ASP.NET 2.0 的设计目的是为了使 web 开发更容易,更快捷。
ASP.NET 2.0 的设计目标:
•  消除 70% 的代码量,以提高生产力
•  为所有类型的设备使用相同的控件
•  提供更快更好的 web 服务器平台
•  简化编译和安装
•  简化 web 应用程序的管理
ASP.NET 2.0 中的新特性
ASP.NET 2.0 中的某些新特性是:
•  母版页(Master Pages)、主题以及 Web 部件
•  针对导航的标准控件
•  针对安全的标准控件
•  角色、个性化和国际化服务
•  改进并简化的数据访问控件
•  对 XML 标准的完整支持,比如 XHTML、XML 以及 WSDL
•  改进的编译和部署(安装)
•  改进的站点管理
•  新的改进的开发工具
下面开始描述这些新特性。
母版页(Master Pages)
过去,ASP.NET 没有能力为一个完整的站点应用一致的外观或观感。
ASP.NET 2.0 中的 Master Pages 解决了这个问题。
master page 是一套应用到其他页面的模版,带有共享的布局和功能性。master page 为内容页面定义了占位符。而结果页面是 master page 和内容页面的组合(合并)。
阅读更多有关 master page 的内容。
主题(Themes)
主题是另一项 ASP.NET 2.0 的特性。主题,或皮肤,允许开发者为 web 应用程序创建定制的外观。
ASP.NET 2.0 主题的设计目标:
•  使站点外观的定制变得容易
•  允许主题被应用到控件、页面以及整个站点
•  允许定制所有可见的元素
Web 部件(Web Parts)
ASP.NET 2.0 的 Web 部件能够为站点提供一致的外观,同时仍然允许用户定制样式和内容。
新控件:
•  Zone 控件 - 页面上内容一致的区域
•  Web part 控件 - 每个 zone 的内容区域
导航(Navigation)
ASP.NET 2.0 拥有内建的导航控件,比如:
•  Site Maps
•  Dynamic HTML menus
•  Tree Views
安全(Security)
对于保护机密以及个人的信息来说,安全性非常重要。
在 ASP.NET 2.0,已经添加了下面这些控件:
•  Login 控件,提供登录功能
•  LoginStatus 控件,控制登录状态
•  LoginName 控件,显示当前用户名
•  LoginView 控件,根据登录状态提供不同的视图
•  CreateUser wizard,进行用户帐户的创建
•  PasswordRecovery 控件,提供“忘记密码”功能
角色和个性化(Roles and Personalization)
因特网社区越来越流行。
ASP.NET 2.0 拥有可存储用户细节信息的个性化特性。该特性为自定义用户(以及用户组)的属性的提供了便捷的方法。
国际化(Internationalization)
当您拥有更庞大的受众时,通过不同的语言服务用户是很重要的。
ASP.NET 2.0 已经改进了对多语言的支持。
数据访问(Data Access)
许多网站都是靠数据驱动的,它们使用数据库或 XML 文件作为数据源。
在使用 ASP.NET 的过程中,相关代码,以及相同的的代码经常被重复使用在不同的网页中。
ASP.NET 2.0 的一个核心目标,就是简化了数据源的使用。
ASP.NET 2.0 拥有新的数据控件,无需太多编程以及深入的数据库连接方面的知识。
Mobility Support
移动设备的问题是屏幕的尺寸以及显示能力。
在 ASP.NET 中,微软的移动因特网套件 (Microsoft Mobile Internet Toolkit,MMIT) 提供了这方面的支持。
在 ASP.NET 2.0 中,不再需要 MMIT,因为所有的控件都内建了移动支持。
图像(Images)
ASP.NET 2.0 拥有用于处理图像的新控件:
•  ImageMap 控件 - 图像映射支持
•  DynamicImage 控件 - 对不同浏览器的图像支持
这些空间对移动设备上更优化的图像显示非常重要,比如手持电脑和移动电话。
自动编译(Automatic Compilation)
ASP.NET 2.0 提供了自动编译。所有同一目录中的文件会在首次运行时进行编译,包含对 WSDL 以及 XSD 文件的支持。
已编译的部署方式(安装)以及源代码保护
ASP.NET 2.0 同时提供了预编译(pre-compilation)。能够对整个站点进行预编译。这就提供了一种部署(上传到服务器)已编译应用程序的简易方法,同时由于只有已编译的文件能够进行部署,源代码也受到了保护。
站点管理(Site Management)
ASP.NET 2.0 有三种配置管理站点的新特性:
•  新的本地管理控制台
•  新的可编程管理功能 (API)
•  新的基于 web 的管理工具
开发工具(Development Tools)
Visual Studio 2005 的核心设计特性包括:
•  对以上所描述的特性的支持
•  从任何地点上传文件(FTP、文件系统、Front Page....)
•  没有项目文件,允许代码在 Visual Studio 之外使用
•  整合了网站管理工具
•  没有“构建”步骤 - 首次运行时进行编译的能力
而对于没有能力使用 Visual Studio.NET 的非企业开发者来说,Visual Web Developer 是一个新的免费的 ASP.NET 2.0 工具。
ASP.NET 2.0 - 母版页(Master Pages)
•Previous Page
•Next Page
母版页(Master Pages)为网站内的其他页面提供模版。
母版页(Master Pages)
Master Page 使您有能力为 web 应用程序中的所有页面(或页面组)创建一致的外观和行为。
Master Page 为其他页面提供了模版,带有共享的布局和功能。Master Page 为内容定义了可被内容页面覆盖的占位符。而输出结果就是 Master Page 和内容页面的组合。
内容页包含您希望显示的内容。
当用户请求内容页时,ASP.NET 会对页面进行合并以生成输出,输出结果对 Master Page 的布局和内容页面的内容进行了合并。
Master Page 实例:
<%@ Master %>
 
<html>
<body>
<h1>Standard Header For All Pages</h1>
 
<asp:ContentPlaceHolder id="CPH1" runat="server">
</asp:ContentPlaceHolder>
 
</body>
</html>
Master Page 是一张为其他页面设计的普通 HTML 模版页。
@ Master 指令把它定义为一个张 master page。
这个 master page 为单独的内容包含了一个占位符标签 <asp:ContentPlaceHolder>
id="CPH1" 属性标识该占位符,在相同的 master page 中允许多个占位符。
该 master page 被保存为 "master1.master"
注释:该 master page 也能够包含代码,允许动态的内容。
内容页实例:
<%@ Page MasterPageFile="master1.master" %>
 
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
 
<h2>Individual Content</h2>
<p>Paragrap 1</p>
<p>Paragrap 2</p>
 
</asp:Content>
上面的内容页是独立的内容页面之一。
@ Page 指令把它定义为一张标准的内容页面。
该内容页面包含了一个内容标签<asp:Content>,该标签引用了母版页(ContentPlaceHolderId="CPH1")。
该内容页被保存为 "mypage1.aspx"
当用户请求该页面时,ASP.NET 就会将母版页与内容页进行合并。
点击这里显示 mypage1.aspx。
注释:内容文本必须位于 <asp:Content> 标签内。该标签外的文本是不被允许的。
带有控件的内容页
<%@ Page MasterPageFile="master1.master" %>
 
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
 
<h2>W3School</h2>
<form runat="server">
<asp:TextBox id="textbox1" runat="server" />
<asp:Button id="button1" runat="server" text="Button" />
</form>
</asp:Content>
上面的内容页演示了如何把 .NET 控件插入内容页,就像插入一个普通的页面中。
点击这里显示 mypage2.aspx。
ASP.NET 2.0 - 导航(Navigation)
•Previous Page
•Next Page
ASP.NET 2.0 拥有内建的导航控件。
网站导航
维护大型站点的导航菜单是很困难,也很费时的。
在 ASP.NET 2.0 中,菜单可存储在文件中,这样维护起来更加方便。这个文件通常名为 web.sitemap,被存放在网站的根目录中。
此外,ASP.NET 2.0 拥有三种新的导航控件:
•  Dynamic menus
•  TreeViews
•  Site Map Path
Sitemap 文件
本教程使用下面的 sitemap 文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<siteMap>
  <siteMapNode title="Home" url="/aspnet/w3home.aspx">
  <siteMapNode title="Services" url="/aspnet/w3services.aspx">
    <siteMapNode title="Training" url="/aspnet/w3training.aspx"/>
    <siteMapNode title="Support" url="/aspnet/w3support.aspx"/>
  </siteMapNode>
  </siteMapNode>
</siteMap>
创建 sitemap 文件的规则:
•  XML 文件必须包含围绕内容的 <siteMap> 标签
•  <siteMap> 标签只能有一个 <siteMapNode> 子节点 ("home" page)
•  每个 <siteMapNode> 可以有多个子节点 (web pages)
•  每个 <siteMapNode> 拥有定义页面标题和 URL 的属性
注释:sitemap 文件必须存放在站点的根目录中,URL 属性必须相对于该根目录。
Dynamic Menu
<asp:Menu> 控件可显示标准的站点导航菜单。
代码实例:
<asp:SiteMapDataSource id="nav1" runat="server" />
 
<form runat="server">
<asp:Menu runat="server" DataSourceId="nav1" />
</form>
在上面的例子中的 <asp:Menu> 控件是一个供服务器创建导航菜单的占位符。
控件的数据源由 DataSourceId 属性进行定义。id="nav1" 把它连接到 <asp:SiteMapDataSource> 控件
<asp:SiteMapDataSource> 控件会自动连接默认的 sitemap 文件(web.sitemap)。
点击此处查看 Menu、TreeView 以及 SiteMapPath 的 DEMO。
TreeView
<asp:TreeView> 控件可显示多级导航菜单。
这种菜单看上去像一棵带有枝叶的树,可通过 + 或 - 符号来打开或关闭。
代码实例:
<asp:SiteMapDataSource id="nav1" runat="server" />
 
<form runat="server">
<asp:TreeView runat="server" DataSourceId="nav1" />
</form>
上面例子中的 <asp:TreeView> 控件是一个供服务器创建导航菜单的占位符。
控件的数据源由 DataSourceId 属性进行定义。id="nav1" 把它连接到 <asp:SiteMapDataSource> 控件
<asp:SiteMapDataSource> 控件会自动连接默认的 sitemap 文件(web.sitemap)。
点击此处查看 Menu、TreeView 以及 SiteMapPath 的 DEMO。
SiteMapPath
SiteMapPath 控件可显示指向当前页面的指针(导航路径)。该路径显示为指向上级页面的可点击链接。
与 TreeView 和 Menu 控件不同,SiteMapPath 控件不使用 SiteMapDataSource。SiteMapPath 控件默认使用 web.sitemap 文件。
提示:如果 SiteMapPath 没有正确显示,很可能是由于 web.sitemap 文件中存在 URL 错误。
代码实例:
<form runat="server">
<asp:SiteMapPath runat="server" />
</form>
上面例子中的 <asp:SiteMapPath> 控件是一个供服务器创建导航菜单的占位符。
点击此处查看 Menu、TreeView 以及 SiteMapPath 的 DEMO。
HTML 服务器控件
•Previous Page
•Next Page
HTML 服务器控件是服务器可理解的 HTML 标签。
HTML 服务器控件
ASP.NET 文件中的 HTML 元素默认作为文本进行处理。为了使这些元素可编程化,需要向 HTML 元素添加 runat="server" 属性。该属性指示该元素应作为服务器控件进行处理。
注释:所有 HTML 服务器控件必须位于带有 runat="server" 属性的 <form> 标签内!
注释:ASP.NET 要求所有 HTML 元素必须正确关闭和嵌套。
HTML 服务器控件 描述
HtmlAnchor 控制 <a> HTML 元素
HtmlButton 控制 <button> HTML 元素
HtmlForm 控制 <form> HTML 元素
HtmlGeneric 控制其他未被具体的 HTML 服务器控件规定的 HTML 元素,比如 <body>, <div>, <span> 等等。
HtmlImage 控制 <image> HTML 元素
HtmlInputButton 控制 <input type="button"> 、<input type="submit"> 以及 <input type="reset"> HTML 元素
HtmlInputCheckBox 控制 <input type="checkbox"> HTML 元素
HtmlInputFile 控制 <input type="file"> HTML 元素
HtmlInputHidden 控制 <input type="hidden"> HTML 元素
HtmlInputImage 控制 <input type="image"> HTML 元素
HtmlInputRadioButton 控制 <input type="radio"> HTML 元素
HtmlInputText 控制 <input type="text"> 和 <input type="password"> HTML 元素
HtmlSelect 控制 <select> HTML 元素
HtmlTable 控制 <table> HTML 元素
HtmlTableCell 控制 <td> 和 <th> HTML 元素
HtmlTableRow 控制 <tr> HTML 元素
HtmlTextArea 控制 <textarea> HTML 元素

 
Web 服务器控件
•Previous Page
•Next Page
Web 服务器控件是可被服务器理解的特殊 ASP.NET 标签。
Web 服务器控件
类似 HTML 服务器控件,Web 服务器控件同样在服务器创建,且需要 runat="server" 属性才能工作。不过,Web 服务器控件不必映射任何已有的 HTML 元素,它们可代表更复杂的元素。
创建一个 Web 服务器控件的语法是:
<asp:control_name id="some_id" runat="server" />
Web 服务器控件 描述
AdRotator 显示一个图形序列
Button 显示按钮
Calendar 显示日历
CalendarDay calendar 控件中的一天
CheckBox 显示复选框
CheckBoxList 创建多选的复】蜃?/td>
DataGrid 显示 grid 中数据源的字段
DataList 通过使用模版显示数据源中的项目
DropDownList 创建下拉列表
HyperLink 创建超链接
Image 显示图像
ImageButton 显示可点击的图像
Label 显示可编程的静态内容(使您对其内容应用样式)
LinkButton 创建超链接按钮
ListBox 创建单选或多选的下拉列表
ListItem 创建列表中的一条项目
Literal 显示可编程的静态内容(无法使您对其内容应用样式)
Panel 为其他控件提供容器
PlaceHolder 为由代码添加的空间预留空间
RadioButton 创建单选按钮
RadioButtonList 创建单选按钮组
BulletedList 创建项目符号格式的列表
Repeater 显示绑定到控件的重复列表项
Style 设置控件的样式
Table 创建表格
TableCell 创建表格单元
TableRow 创建表格行
TextBox 创建文本框
Xml 显示 XML 文件或 XSL 转换的结果

Validation 服务器控件
•Previous Page
•Next Page
Validation 服务器控件用于用于验证用户输入。
Validation 服务器控件
Validation 服务器控件用于验证输入控件的数据。如果数据未通过验证,则向用户显示错误消息。
创建 Validation 服务器控件的语法是:
<asp:control_name id="some_id" runat="server" />
Validation 服务器控件 描述
CompareValidator 把一个输入控件的值与另一个输入控件或一个固定的值进行对比。
CustomValidator 允许您编写一个方法,来处理输入值的验证。
RangeValidator 在两个值的范围内检查输入的值。
RegularExpressionValidator 确保输入控件的值匹配指定的模式。
RequiredFieldValidator 是输入控件成为必需(必填)的字段。
ValidationSummary 显示网页中所有验证错误的报告。

 
, 中的改进
ASP.NET 2.0 的设计目的是为了使 web 开发更容易,更快捷。
ASP.NET 2.0 的设计目标:
•  消除 70% 的代码量,以提高生产力
•  为所有类型的设备使用相同的控件
•  提供更快更好的 web 服务器平台
•  简化编译和安装
•  简化 web 应用程序的管理
ASP.NET 2.0 中的新特性
ASP.NET 2.0 中的某些新特性是:
•  母版页(Master Pages)、主题以及 Web 部件
•  针对导航的标准控件
•  针对安全的标准控件
•  角色、个性化和国际化服务
•  改进并简化的数据访问控件
•  对 XML 标准的完整支持,比如 XHTML、XML 以及 WSDL
•  改进的编译和部署(安装)
•  改进的站点管理
•  新的改进的开发工具
下面开始描述这些新特性。
母版页(Master Pages)
过去,ASP.NET 没有能力为一个完整的站点应用一致的外观或观感。
ASP.NET 2.0 中的 Master Pages 解决了这个问题。
master page 是一套应用到其他页面的模版,带有共享的布局和功能性。master page 为内容页面定义了占位符。而结果页面是 master page 和内容页面的组合(合并)。
阅读更多有关 master page 的内容。
主题(Themes)
主题是另一项 ASP.NET 2.0 的特性。主题,或皮肤,允许开发者为 web 应用程序创建定制的外观。
ASP.NET 2.0 主题的设计目标:
•  使站点外观的定制变得容易
•  允许主题被应用到控件、页面以及整个站点
•  允许定制所有可见的元素
Web 部件(Web Parts)
ASP.NET 2.0 的 Web 部件能够为站点提供一致的外观,同时仍然允许用户定制样式和内容。
新控件:
•  Zone 控件 - 页面上内容一致的区域
•  Web part 控件 - 每个 zone 的内容区域
导航(Navigation)
ASP.NET 2.0 拥有内建的导航控件,比如:
•  Site Maps
•  Dynamic HTML menus
•  Tree Views
安全(Security)
对于保护机密以及个人的信息来说,安全性非常重要。
在 ASP.NET 2.0,已经添加了下面这些控件:
•  Login 控件,提供登录功能
•  LoginStatus 控件,控制登录状态
•  LoginName 控件,显示当前用户名
•  LoginView 控件,根据登录状态提供不同的视图
•  CreateUser wizard,进行用户帐户的创建
•  PasswordRecovery 控件,提供“忘记密码”功能
角色和个性化(Roles and Personalization)
因特网社区越来越流行。
ASP.NET 2.0 拥有可存储用户细节信息的个性化特性。该特性为自定义用户(以及用户组)的属性的提供了便捷的方法。
国际化(Internationalization)
当您拥有更庞大的受众时,通过不同的语言服务用户是很重要的。
ASP.NET 2.0 已经改进了对多语言的支持。
数据访问(Data Access)
许多网站都是靠数据驱动的,它们使用数据库或 XML 文件作为数据源。
在使用 ASP.NET 的过程中,相关代码,以及相同的的代码经常被重复使用在不同的网页中。
ASP.NET 2.0 的一个核心目标,就是简化了数据源的使用。
ASP.NET 2.0 拥有新的数据控件,无需太多编程以及深入的数据库连接方面的知识。
Mobility Support
移动设备的问题是屏幕的尺寸以及显示能力。
在 ASP.NET 中,微软的移动因特网套件 (Microsoft Mobile Internet Toolkit,MMIT) 提供了这方面的支持。
在 ASP.NET 2.0 中,不再需要 MMIT,因为所有的控件都内建了移动支持。
图像(Images)
ASP.NET 2.0 拥有用于处理图像的新控件:
•  ImageMap 控件 - 图像映射支持
•  DynamicImage 控件 - 对不同浏览器的图像支持
这些空间对移动设备上更优化的图像显示非常重要,比如手持电脑和移动电话。
自动编译(Automatic Compilation)
ASP.NET 2.0 提供了自动编译。所有同一目录中的文件会在首次运行时进行编译,包含对 WSDL 以及 XSD 文件的支持。
已编译的部署方式(安装)以及源代码保护
ASP.NET 2.0 同时提供了预编译(pre-compilation)。能够对整个站点进行预编译。这就提供了一种部署(上传到服务器)已编译应用程序的简易方法,同时由于只有已编译的文件能够进行部署,源代码也受到了保护。
站点管理(Site Management)
ASP.NET 2.0 有三种配置管理站点的新特性:
•  新的本地管理控制台
•  新的可编程管理功能 (API)
•  新的基于 web 的管理工具
开发工具(Development Tools)
Visual Studio 2005 的核心设计特性包括:
•  对以上所描述的特性的支持
•  从任何地点上传文件(FTP、文件系统、Front Page....)
•  没有项目文件,允许代码在 Visual Studio 之外使用
•  整合了网站管理工具
•  没有“构建”步骤 - 首次运行时进行编译的能力
而对于没有能力使用 Visual Studio.NET 的非企业开发者来说,Visual Web Developer 是一个新的免费的 ASP.NET 2.0 工具。
ASP.NET 2.0 - 母版页(Master Pages)
•Previous Page
•Next Page
母版页(Master Pages)为网站内的其他页面提供模版。
母版页(Master Pages)
Master Page 使您有能力为 web 应用程序中的所有页面(或页面组)创建一致的外观和行为。
Master Page 为其他页面提供了模版,带有共享的布局和功能。Master Page 为内容定义了可被内容页面覆盖的占位符。而输出结果就是 Master Page 和内容页面的组合。
内容页包含您希望显示的内容。
当用户请求内容页时,ASP.NET 会对页面进行合并以生成输出,输出结果对 Master Page 的布局和内容页面的内容进行了合并。
Master Page 实例:
<%@ Master %>
 
<html>
<body>
<h1>Standard Header For All Pages</h1>
 
<asp:ContentPlaceHolder id="CPH1" runat="server">
</asp:ContentPlaceHolder>
 
</body>
</html>
Master Page 是一张为其他页面设计的普通 HTML 模版页。
@ Master 指令把它定义为一个张 master page。
这个 master page 为单独的内容包含了一个占位符标签 <asp:ContentPlaceHolder>
id="CPH1" 属性标识该占位符,在相同的 master page 中允许多个占位符。
该 master page 被保存为 "master1.master"
注释:该 master page 也能够包含代码,允许动态的内容。
内容页实例:
<%@ Page MasterPageFile="master1.master" %>
 
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
 
<h2>Individual Content</h2>
<p>Paragrap 1</p>
<p>Paragrap 2</p>
 
</asp:Content>
上面的内容页是独立的内容页面之一。
@ Page 指令把它定义为一张标准的内容页面。
该内容页面包含了一个内容标签<asp:Content>,该标签引用了母版页(ContentPlaceHolderId="CPH1")。
该内容页被保存为 "mypage1.aspx"
当用户请求该页面时,ASP.NET 就会将母版页与内容页进行合并。
点击这里显示 mypage1.aspx。
注释:内容文本必须位于 <asp:Content> 标签内。该标签外的文本是不被允许的。
带有控件的内容页
<%@ Page MasterPageFile="master1.master" %>
 
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
 
<h2>W3School</h2>
<form runat="server">
<asp:TextBox id="textbox1" runat="server" />
<asp:Button id="button1" runat="server" text="Button" />
</form>
</asp:Content>
上面的内容页演示了如何把 .NET 控件插入内容页,就像插入一个普通的页面中。
点击这里显示 mypage2.aspx。
ASP.NET 2.0 - 导航(Navigation)
•Previous Page
•Next Page
ASP.NET 2.0 拥有内建的导航控件。
网站导航
维护大型站点的导航菜单是很困难,也很费时的。
在 ASP.NET 2.0 中,菜单可存储在文件中,这样维护起来更加方便。这个文件通常名为 web.sitemap,被存放在网站的根目录中。
此外,ASP.NET 2.0 拥有三种新的导航控件:
•  Dynamic menus
•  TreeViews
•  Site Map Path
Sitemap 文件
本教程使用下面的 sitemap 文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<siteMap>
  <siteMapNode title="Home" url="/aspnet/w3home.aspx">
  <siteMapNode title="Services" url="/aspnet/w3services.aspx">
    <siteMapNode title="Training" url="/aspnet/w3training.aspx"/>
    <siteMapNode title="Support" url="/aspnet/w3support.aspx"/>
  </siteMapNode>
  </siteMapNode>
</siteMap>
创建 sitemap 文件的规则:
•  XML 文件必须包含围绕内容的 <siteMap> 标签
•  <siteMap> 标签只能有一个 <siteMapNode> 子节点 ("home" page)
•  每个 <siteMapNode> 可以有多个子节点 (web pages)
•  每个 <siteMapNode> 拥有定义页面标题和 URL 的属性
注释:sitemap 文件必须存放在站点的根目录中,URL 属性必须相对于该根目录。
Dynamic Menu
<asp:Menu> 控件可显示标准的站点导航菜单。
代码实例:
<asp:SiteMapDataSource id="nav1" runat="server" />
 
<form runat="server">
<asp:Menu runat="server" DataSourceId="nav1" />
</form>
在上面的例子中的 <asp:Menu> 控件是一个供服务器创建导航菜单的占位符。
控件的数据源由 DataSourceId 属性进行定义。id="nav1" 把它连接到 <asp:SiteMapDataSource> 控件
<asp:SiteMapDataSource> 控件会自动连接默认的 sitemap 文件(web.sitemap)。
点击此处查看 Menu、TreeView 以及 SiteMapPath 的 DEMO。
TreeView
<asp:TreeView> 控件可显示多级导航菜单。
这种菜单看上去像一棵带有枝叶的树,可通过 + 或 - 符号来打开或关闭。
代码实例:
<asp:SiteMapDataSource id="nav1" runat="server" />
 
<form runat="server">
<asp:TreeView runat="server" DataSourceId="nav1" />
</form>
上面例子中的 <asp:TreeView> 控件是一个供服务器创建导航菜单的占位符。
控件的数据源由 DataSourceId 属性进行定义。id="nav1" 把它连接到 <asp:SiteMapDataSource> 控件
<asp:SiteMapDataSource> 控件会自动连接默认的 sitemap 文件(web.sitemap)。
点击此处查看 Menu、TreeView 以及 SiteMapPath 的 DEMO。
SiteMapPath
SiteMapPath 控件可显示指向当前页面的指针(导航路径)。该路径显示为指向上级页面的可点击链接。
与 TreeView 和 Menu 控件不同,SiteMapPath 控件不使用 SiteMapDataSource。SiteMapPath 控件默认使用 web.sitemap 文件。
提示:如果 SiteMapPath 没有正确显示,很可能是由于 web.sitemap 文件中存在 URL 错误。
代码实例:
<form runat="server">
<asp:SiteMapPath runat="server" />
</form>
上面例子中的 <asp:SiteMapPath> 控件是一个供服务器创建导航菜单的占位符。
点击此处查看 Menu、TreeView 以及 SiteMapPath 的 DEMO。
HTML 服务器控件
•Previous Page
•Next Page
HTML 服务器控件是服务器可理解的 HTML 标签。
HTML 服务器控件
ASP.NET 文件中的 HTML 元素默认作为文本进行处理。为了使这些元素可编程化,需要向 HTML 元素添加 runat="server" 属性。该属性指示该元素应作为服务器控件进行处理。
注释:所有 HTML 服务器控件必须位于带有 runat="server" 属性的 <form> 标签内!
注释:ASP.NET 要求所有 HTML 元素必须正确关闭和嵌套。
HTML 服务器控件 描述
HtmlAnchor 控制 <a> HTML 元素
HtmlButton 控制 <button> HTML 元素
HtmlForm 控制 <form> HTML 元素
HtmlGeneric 控制其他未被具体的 HTML 服务器控件规定的 HTML 元素,比如 <body>, <div>, <span> 等等。
HtmlImage 控制 <image> HTML 元素
HtmlInputButton 控制 <input type="button"> 、<input type="submit"> 以及 <input type="reset"> HTML 元素
HtmlInputCheckBox 控制 <input type="checkbox"> HTML 元素
HtmlInputFile 控制 <input type="file"> HTML 元素
HtmlInputHidden 控制 <input type="hidden"> HTML 元素
HtmlInputImage 控制 <input type="image"> HTML 元素
HtmlInputRadioButton 控制 <input type="radio"> HTML 元素
HtmlInputText 控制 <input type="text"> 和 <input type="password"> HTML 元素
HtmlSelect 控制 <select> HTML 元素
HtmlTable 控制 <table> HTML 元素
HtmlTableCell 控制 <td> 和 <th> HTML 元素
HtmlTableRow 控制 <tr> HTML 元素
HtmlTextArea 控制 <textarea> HTML 元素

 
Web 服务器控件
•Previous Page
•Next Page
Web 服务器控件是可被服务器理解的特殊 ASP.NET 标签。
Web 服务器控件
类似 HTML 服务器控件,Web 服务器控件同样在服务器创建,且需要 runat="server" 属性才能工作。不过,Web 服务器控件不必映射任何已有的 HTML 元素,它们可代表更复杂的元素。
创建一个 Web 服务器控件的语法是:
<asp:control_name id="some_id" runat="server" />
Web 服务器控件 描述
AdRotator 显示一个图形序列
Button 显示按钮
Calendar 显示日历
CalendarDay calendar 控件中的一天
CheckBox 显示复选框
CheckBoxList 创建多选的复】蜃?/td>
DataGrid 显示 grid 中数据源的字段
DataList 通过使用模版显示数据源中的项目
DropDownList 创建下拉列表
HyperLink 创建超链接
Image 显示图像
ImageButton 显示可点击的图像
Label 显示可编程的静态内容(使您对其内容应用样式)
LinkButton 创建超链接按钮
ListBox 创建单选或多选的下拉列表
ListItem 创建列表中的一条项目
Literal 显示可编程的静态内容(无法使您对其内容应用样式)
Panel 为其他控件提供容器
PlaceHolder 为由代码添加的空间预留空间
RadioButton 创建单选按钮
RadioButtonList 创建单选按钮组
BulletedList 创建项目符号格式的列表
Repeater 显示绑定到控件的重复列表项
Style 设置控件的样式
Table 创建表格
TableCell 创建表格单元
TableRow 创建表格行
TextBox 创建文本框
Xml 显示 XML 文件或 XSL 转换的结果

Validation 服务器控件
•Previous Page
•Next Page
Validation 服务器控件用于用于验证用户输入。
Validation 服务器控件
Validation 服务器控件用于验证输入控件的数据。如果数据未通过验证,则向用户显示错误消息。
创建 Validation 服务器控件的语法是:
<asp:control_name id="some_id" runat="server" />
Validation 服务器控件 描述
CompareValidator 把一个输入控件的值与另一个输入控件或一个固定的值进行对比。
CustomValidator 允许您编写一个方法,来处理输入值的验证。
RangeValidator 在两个值的范围内检查输入的值。
RegularExpressionValidator 确保输入控件的值匹配指定的模式。
RequiredFieldValidator 是输入控件成为必需(必填)的字段。
ValidationSummary 显示网页中所有验证错误的报告。

 
上一篇文章:已到尽头
下一篇文章:asp.net中的文件类型
评论 】 【 推荐 】 【 打印
      评一评
Loading...
笔名:
评论:
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
[评论将在5分钟内被审核,请耐心等待]