Scott Mitchell
2003 年 8 月
适用于:
Microsoft® ASP.NET
Microsoft® Visual Basic®
摘要:了解使用 ASP.NET 开发 Web 应用程序与传统的桌面应用程序开发之间的相同点和不同点。本文适用于对创建 ASP.NET Web 应用程序感兴趣的 Visual Basic 6.0 开发人员,其中介绍了使用 Visual Basic 6.0 创建桌面应用程序与使用 Visual Basic .NET 创建 ASP.NET Web 应用程序之间的差别。(本文包含一些指向英文站点的链接。)
下载 ASPNETCrashCourse.msi。(请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解。)
目录
简介
使用 ASP.NET 前的准备工作
创建第一个 ASP.NET Web 页面
Web 应用程序与桌面应用程序之间的重要差别
将一个 Web 窗体中的值发送到另一个 Web 窗体
小结
简介
在 .NET 诞生之前,创建传统的 ASP Web 应用程序与使用 Microsoft Visual Basic® 6.0 创建桌面 Microsoft® Windows® 应用程序有很多显著和根本的差别。对于初学者而言,Visual Basic 应用程序用户界面是通过 Microsoft Visual Studio® 中的拖放 GUI 工具创建的,而创建 ASP Web 应用程序用户界面则需要手动添加 HTML 标记以生成相应的界面。此外,ASP Web 页面包含混合了 HTML 标记和源代码的脚本代码,而 Visual Basic 应用程序则处理类、模块和其他结构化的、面向对象的编程构造。
.NET 诞生后,传统的 ASP 演变成 ASP.NET。ASP.NET 的各种功能使得创建 ASP.NET Web 页面与在 Visual Basic 应用程序中创建单个窗体非常类似。尽管很相似,但由于传递媒介的不同,使得创建 Web 应用程序与创建桌面应用程序之间存在一些根本的差别。
本文首先介绍开始创建 ASP.NET Web 应用程序前的准备工作(已经开始使用 ASP.NET 的开发人员可以选择跳过此部分)。然后介绍那些使创建 ASP.NET Web 应用程序与创建 Windows 桌面应用程序很类似的 ASP.NET 功能。本文还提供了一些使用 Visual Studio .NET 创建 ASP.NET Web 页面的精巧示例,用于说明创建 Web 应用程序与创建桌面应用程序之间的令人惊奇的相似性。此外还说明了创建 Web 应用程序与创建桌面应用程序之间的根本差别。最后,本文探讨了一个常见的 Visual Basic 任务--在窗体之间传递信息,并说明了如何在 ASP.NET Web 应用程序中实现此功能。
使用 ASP.NET 前的准备工作
在开始创建 ASP.NET Web 页面之前,首先需要一台能够支持 ASP.NET Web 页面的计算机。该计算机需要运行 Microsoft Windows 2000、Microsoft Windows XP Professional 或 Microsoft Windows Server™ 2003。如果没有这样的计算机,您始终可以借助某个提供 Web 宿主服务的公司的服务。有关支持 ASP.NET 的 Web 宿主公司的信息,请访问 ASP.NET Forums 中的 ISPs with ASP.NET Support。
如果选择使用自己的计算机提供 ASP.NET Web 页面,需要安装以下两个软件组件:
- Microsoft Internet 信息服务 (IIS) 5.0 或更高版本
- .NET Framework
IIS 是 Microsoft 的 Web 服务器,随 Windows 的服务器版本免费提供。IIS 6.0 是随 Windows Server 2003 提供的,而 IIS 5.0 是随 Windows 2000 和 Windows XP Professional 提供的。要确定您的 Windows 2000、Windows XP Professional 或 Windows 2003 Server 计算机上是否安装了 IIS,请打开“控制面板”,转到“添加/删除程序”,然后单击“添加/删除 Windows 组件”按钮。将显示图 1 所示的对话框。如果看到“Internet 信息服务”复选框被选中,则表示已安装了 IIS;否则,请选中该复选框并单击“下一步”按钮安装 IIS。
图 1:查看“Windows 组件”对话框以确保安装了 IIS
有关安装 IIS 的详细信息,请参阅 Microsoft.com 中的以下官方指南:
除安装 IIS Web 服务器外,您还必须在 Web 服务器上安装 .NET Framework Redistributable(可再分发程序包)。在撰写本文时,.NET Framework 的版本为 1.1,您可以从 Microsoft .NET Framework Version 1.1 Redistributable Package 下载它。.NET Framework 包含在 Web 服务器上执行 .NET 应用程序所需的类框架。由于 ASP.NET Web 应用程序是 .NET 应用程序并利用了 .NET Framework 中的很多类,因而必须在 Web 服务器上安装 .NET Framework 可再分发程序包。
注意:虽然 Web 服务器和 .NET Framework 的安装不分先后,但还是建议您先安装 Web 服务器。这是因为随后安装 .NET Framework 时,会更新 Web 服务器的配置设置,从而 Web 服务器可以支持 ASP.NET Web 页面。如果先安装 .NET Framework,Web 服务器将不会支持 ASP.NET Web 页面。但运行 aspnet_regiis.exe 文件后即可轻松解决此问题。有关详细信息,请访问 4GuysFromRolla.com :ASP FAQS :ASP.NET。
创建第一个 ASP.NET Web 页面
虽然 ASP.NET Web 页面与 Visual Basic 应用程序一样,可以通过任何文本编辑器进行创建,但是使用 Visual Studio .NET 这样的工具可以大大简化创建过程。要开发 ASP.NET Web 页面,您应当在用于开发 ASP.NET Web 页面的计算机上安装最新版本的 Visual Studio .NET。虽然还有其他一些适用于 ASP.NET 的开发编辑器,如 ASP.NET Web Matrix,但 Visual Studio .NET 提供了一个与 Visual Basic 6.0 的设计界面极为类似的设计界面。
下面,我们将创建一个简单的 ASP.NET Web 页面,以揭示创建 ASP.NET 应用程序与创建传统的 Windows 桌面应用程序到底有多么类似。首先,启动 Visual Studio .NET 并创建一个新的 Visual Basic ASP.NET Web 应用程序项目。然后,在 Location(位置)下拉列表中,指定 ASP.NET 应用程序的 URL。如果要在用于开发的同一台计算机上提供 ASP.NET Web 页面,请将 URL 设置为 http://localhost/ 并选择一个项目名称,然后输入 http://localhost/ProjectName。如果将 ASP.NET Web 应用程序放在远程 Web 服务器上,则输入指向该 Web 服务器的 URL 或 IP 地址以及项目名称,例如 http://WebServerURLorIP/ProjectName。图 2 显示了 Visual Studio .NET New Project(新建项目)对话框的屏幕快照,它将创建一个位于 http://localhost/ASPNETCrashCourse 的新 Visual Basic ASP.NET Web 应用程序。
图 2:创建一个新的 Visual Basic ASP.NET Web 应用程序
单击 OK(确定)按钮后,Visual Studio .NET 将创建这个新的 Web 应用程序。这将包括创建在 Location(位置)下拉列表中指定的目录、添加某些文件以及更新 Web 服务器的配置以表明新创建的目录应当是 IIS 应用程序。
ASP.NET Web 应用程序由一些 ASP.NET Web 页面组成。每个 Web 页面都是具有文件扩展名 .aspx 的不同文件。ASP.NET Web 页面和 ASP.NET Web 应用程序之间的关系与单个窗体和 Visual Basic 6.0 应用程序的关系一样。也就是说,ASP.NET Web 页面提供了一个用于与 Web 访问者进行交互的界面。与 Visual Basic 窗体一样,每个 ASP.NET Web 页面都包含两个不同的部分:
- 图形用户界面
- 类,其代码响应由用户界面中的控件引发的事件
ASP.NET Web 页面通常被称为“Web 窗体”。可以添加到 ASP.NET Web 页面的用户界面中的控件称为“Web 控件”。
创建新的 ASP.NET Web 应用程序时,将创建一个默认 Web 窗体 WebForm1.aspx。图 3 显示了创建新 ASP.NET Web 应用程序项目后的 Visual Studio .NET 屏幕快照。
图 3:创建新 ASP.NET Web 应用程序项目后的 Visual Studio .NET
下面详细说明一下图 3。请注意,屏幕中当前显示了 WebForm1.aspx 的设计器。设计器提供 ASP.NET Web 页面的 WYSIWYG 视图,它显示了访问该 Web 页面的用户将看到的内容。要向该 ASP.NET Web 页面中添加 Web 控件,只需将这些控件从 Toolbox(工具箱)中拖放到设计器中。
由于 ASP.NET Web 页面是 Web 页面,因而除 Web 控件外,其中还包含 HTML 标记。要查看 ASP.NET Web 页面的 HTML 标记,只需单击 HTML 按钮,该按钮位于设计器左下角 Design(设计)按钮的旁边。因此,您既可以通过 WYSIWYG 设计器来处理 ASP.NET Web 页面的用户界面,也可以通过 HTML 视图直接修改 Web 页面的 HTML。
为熟悉 Visual Studio .NET 以及更好地了解创建 ASP.NET Web 应用程序的过程,让我们向 WebForm1.aspx 中添加一些 Web 控件。具体地讲,我们将创建一个用作简单的财务计算器的 ASP.NET Web 页面,用于在给定最初本金、利率和投资期限的情况下计算用户的投资收益。
为此,我们需要添加一些标签 (Label) 和文本框 (TextBox) Web 控件以及一个按钮 (Button) Web 控件。标签 Web 控件与 Visual Basic 6 中的一样,用于显示静态或动态的文本内容。要添加标签 Web 控件,只需将其从 Toolbox(工具箱)中拖放到设计器中。然后,单击该 Label Web 控件将其属性加载到 Properties(属性)窗格中。在该窗格中,您可以将它的 Text 属性设置为要显示的文本值,将其 ID 属性设置为某个唯一的值。您可以通过相同的方法将文本框 Web 控件添加到设计器中。
图 4 显示了添加所有所需的标签和文本框 Web 控件后的设计器屏幕快照。注意,每个要收集的用户输入都有一个文本框 Web 控件。添加这些 Web 控件时,应当将每个 Web 控件的 ID 属性设置为有意义的值。与 Visual Basic 中一样,ID 属性用作唯一的标识符,在 ASP.NET Web 页面的源代码中也是通过它以编程方式引用 Web 控件的。在本练习中,我们将这三个文本框 Web 控件的 ID 分别设置为“StartValue”、“Rate”和“Duration”。
图 4:添加相应的标签和文本框 Web 控件后的设计器
除图 4 中显示的标签和文本框 Web 控件外,我们还需要添加两个 Web 控件。第一个是用于显示财务计算结果的标签 Web 控件。将此标签 Web 控件放在页面底部附近,清除其 Text 属性并将其 ID 属性值设置为“Results”。最后,我们还需要一个按钮 Web 控件。此 Web 控件将显示一个用户在输入数据后要单击的按钮。将此按钮 Web 控件的 Text 属性设置为“Display Future Investment Value”。添加这两个 Web 控件后,您的屏幕将如图 5 中的屏幕快照所示。
图 5:添加最后两个 Web 控件后的设计器
至此,我们已经完成了用户界面的设计,接下来我们将开始编写代码。具体地讲,就是要在用户单击按钮 Web 控件时执行财务计算并在“Results”标签中显示结果。与在 Visual Basic 6 窗体中一样,您只需在设计器中双击该按钮即可为该按钮 Web 控件的 Click 事件添加事件处理程序。
为该按钮 Web 控件的 Click 事件创建事件处理程序后,您将直接转到 ASP.NET Web 页面的源代码部分,其中显示了新的事件处理程序(如图 6 所示)。ASP.NET Web 页面的源代码部分驻留在一个名为 WebForm1.aspx.vb 的单独文件中。
图 6:Click 事件处理程序自动添加到 ASP.NET Web 页面的源代码部分
剩下的工作就是编写代码以计算未来的投资值并在“Results”标签中显示该值。下面显示了 Click 事件处理程序的完整代码。对于 Visual Basic 开发人员来说,此代码是很简单的。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' 计算投资的未来值,它是 ' 本金与一定时间后的利息的和 ' 公式:Value = Principal * e^(Rate/12 * Duration) Dim value As Double Dim beginningWith As Double = StartValue.Text Dim interestRate As Double = Rate.Text Dim investmentTime As Double = Duration.Text value = beginningWith * Math.Exp((interestRate / 100) * investmentTime / 12) '将结果值指定到“Results”标签中 Results.Text = "The investment, after " & investmentTime & " months," & _ " will be worth: " & FormatCurrency(value) End Sub
要测试此 ASP.NET Web 页面,只需转到 Debug(调试)菜单并选择 Start(开始)(或按 F5 键)。这将对 ASP.NET Web 页面的源代码进行编译,同时启动一个 Web 浏览器加载指定的开始页(WebForm1.aspx 是默认的开始页)。您将看到类似图 7 所示的浏览器窗口。如果向文本框中输入值然后单击按钮,输入窗体下将显示一个结果,如图 8 所示。
图 7:首次访问时显示的 WebForm1.aspx
图 8:输入信息并单击“Display Future Investment Value”按钮后的 WebForm1.aspx
Web 应用程序与桌面应用程序之间的重要差别
虽然创建 Web 应用程序与创建桌面应用程序之间有很多相似之处,从而 Visual Basic 开发人员可以很快地熟悉 ASP.NET 应用程序的创建,但仍有几处细微却很重要的差别需要注意。Web 应用程序与桌面应用程序之间最根本的差别就是用于进行传递的媒介。
桌面应用程序作为独立的实体直接在用户的计算机上运行。应用程序的用户界面与用户输入的处理之间不存在物理分隔。此外,应用程序的状态是独立的。也就是说,如果用户需要填写若干包含数据的窗体,则每个窗体都可以很容易地知道并访问以前窗体中的值。
而对于 Web 应用程序,上述规则并不适用。在 Web 应用程序中,用于处理用户输入的源代码驻留在 Web 服务器上,而用户界面则被发送至用户计算机并显示在用户计算机的 Web 浏览器中。因此,用户界面与 Web 应用程序的代码之间没有直接的连接。
以上述财务计算器应用程序为例,当 Web 访问者请求 ASP.NET Web 页面时,ASP.NET Web 页面将根据此页面的用户界面和在此页面的源代码部分中执行的代码返回 HTML 标记。用户的 Web 浏览器在用户计算机上将收到的 HTML 标记呈现为图形用户界面。此时,在生成此 HTML 标记的 ASP.NET Web 页面与用户的 Web 浏览器之间没有直接的连接。
用户在自己的计算机上将数据输入到各个文本框中,然后单击“Display Future Investment Value”按钮。单击此按钮后,用户的 Web 浏览器将向同一 ASP.NET Web 页面发回一个请求,发送用户在各个文本框中输入的值以及其他信息。通过此信息,ASP.NET Web 页面可以确定用户单击了此按钮,从而引发按钮 Web 控件的 Click 事件并执行 Click 事件处理程序。如上所述,此 Click 事件处理程序将计算最终的投资值并将该值显示在“Results”标签中。随后,新的显示内容将以 HTML 标记的形式返回到用户的浏览器,用户将看到先前显示的 Web 页面,但在页面的底部附近显示了未来的投资值。
注意,Internet 自身的无连接和无状态特性在一定程度上限制了 Web 应用程序的功能。例如,假设要设计一个提示用户输入邮政编码等内容的应用程序。如果使用 Visual Basic,则只需添加一个文本框控件并捕获对此控件执行的每个键击操作。如果,例如,用户输入了一个非数字键,则既可以不接受输入,也可以提供某种反馈机制,通知用户输入了一个无效的美国邮政编码字符。然而,对于 Web 应用程序,这种功能无法通过 ASP.NET Web 页面的源代码部分实现。这是因为 ASP.NET Web 页面的源代码部分仅在用户的浏览器请求该页面时才会执行。而这仅发生在首次加载页面或通过单击按钮或其他机制提交此页面之时。
将一个 Web 窗体中的值发送到另一个 Web 窗体
Visual Basic 应用程序中的一个常见任务就是将一个窗体中的值发送到另一个窗体。例如,雇员数据库应用程序可能在一个窗体的下拉列表中列出了公司的雇员,以及所有雇员的公用信息。在此窗体中,用户可以选择一个特定雇员,然后单击“Details”按钮显示第二个窗体,其中显示了选定雇员的姓名、地址以及薪水信息。由于 Visual Basic 桌面应用程序具有连接性和状态性,因此可以使用一个公用模块来保存所有窗体的公用值,或者主窗体可以将其下拉列表中的选定值提供给详细信息窗体。
由于 Internet 是无连接和无状态的,因而仅当从 Web 浏览器请求窗体时才会执行 Web 窗体。因此,要使一个 Web 窗体能够加载另一个 Web 窗体,必须以某种方式指示用户的浏览器加载第二个 Web 窗体的 URL。可以通过 URL 的 QueryString 将值从一个 Web 窗体传递到另一个 Web 窗体。在讨论如何通过 QueryString 在 Web 窗体间传递值之前,我们先了解一下 Response.Redirect()
方法,它用于指示 Web 浏览器请求指定的 URL。通过该方法,一个 Web 窗体可以加载另一个 Web 窗体。
为说明 Response.Redirect()
方法的具体应用,我们创建一个包含单个按钮 Web 控件的 ASP.NET Web 页面。单击此按钮时,用户将被转到另一个 Web 窗体。首先创建第一个 Web 窗体(即包含该按钮的窗体),将其命名为 First.aspx。要创建新 Web 窗体,请右键单击项目名称 ASPNETCrashCourse,然后选择 Add / Add New Web Form(添加/添加新 Web 窗体)。对于此 Web 窗体,只需添加一个按钮 Web 控件,将其 Text 属性值设置为“Click Me”。图 9 显示了创建此 ASP.NET Web 页面并添加按钮 Web 控件后的 Visual Studio .NET 屏幕快照。
图 9:在 First.aspx Web 窗体中添加一个按钮 Web 控件
接下来,在设计器中双击该按钮 Web 控件,为该按钮的 Click 事件添加事件处理程序。在此事件处理程序中添加以下代码行:
Response.Redirect("Second.aspx")
正如您看到的,Response.Redirect()
方法将获取一个字符串参数,即用于重定向用户浏览器的 URL。现在,我们创建一个名为 Second.aspx 的 Web 窗体,其中只包含一个标签 Web 控件,其 Text 属性值为“Welcome to the Second Web Form”。
现在,为开始测试 First.aspx Web 页面,您需要将 First.aspx 设置为 Start Page(开始页)。为此,可以在 Solution Explorer(解决方案资源管理器)中右键单击 First.aspx 并选择 Set as Start Page(设为起始页面)选项。然后,转到 Debug(调试)并选择 Start(开始)选项,这将编译 ASP.NET Web 页面的源代码部分并启动 Web 浏览器以访问 First.aspx。此时浏览器中将显示一个按钮。单击此按钮将使浏览器重新请求 First.aspx。该请求将导致执行 First.aspx 的源代码部分,同时引发按钮的 Click 事件并执行事件处理程序。这将引发 Response.Redirect()
方法,它会向用户的 Web 浏览器发回一条消息,指示浏览器请求 Second.aspx。随后,Web 浏览器将请求 Second.aspx 并显示最终的输出结果“Welcome to the Second Web Form”。
至此,我们已经了解了如何使用 Response.Redirect()
在用户浏览器中加载其他 Web 窗体。可以通过 QueryString 将一组简单的标量值(例如字符串、数字和日期)从一个 Web 窗体传递到另一个 Web 窗体。QueryString 是附加到 Web 窗体的 URL 的附加文本,它按以下格式包含了变量名及其值的列表:
VariableName1=Value1&VariableName2=Value2&...&VariableNameN=ValueN
注意,每个变量名和值对由 & 符号分隔,而每个变量名与它的值由等号分隔。包含附加的 QueryString 的 URL 如下所示:
http://www.SomeSite.com/SomePage.aspx?SomeName=SomeValue&SomeOtherName= SomeOtherValue
下面,我们将修改 First.aspx,使其除了按钮 Web 控件外,还包含一个文本框 Web 控件,供用户在其中输入字符串。然后,我们将修改该按钮 Web 控件事件处理程序中的 Response.Redirect()
方法调用,以便将字符串的值传递给 Second.aspx Web 窗体。最后,我们将第一个 Web 窗体中的字符串值显示在 Second.aspx Web 窗体的标签 Web 控件中。
首先,向 First.aspx 中添加一个文本框 Web 控件,其 ID
属性为“ValueToPass”。在 Click 事件处理程序中,我们需要传递“ValueToPass”文本框的 Text 属性值。要实现此目的,应当将事件处理程序中的代码从:
Response.Redirect("Second.aspx")
更改为:
Response.Redirect("Second.aspx?TextBoxValue=" & Server.UrlEncode(ValueToPass.Text))
Server.UrlEncode()
方法对传入的字符串参数进行编码,使其成为安全的 QueryString。较早版本的浏览器不允许在 QueryString 中使用某些字符(如空格),并要求将这些字符转义为安全的等价字符(例如,将空格转义为 +
)。Server.UrlEncode()
可以很好地完成所有这些转义操作。注意,进行这样的更改后,当单击 First.aspx 中的按钮时,用户的 Web 浏览器将请求以下 URL:Second.aspx?TextBoxValue=ValueEnteredIntoTextBox。这实际上是将名为 TextBoxValue 的 QueryString 变量传递给 Second.aspx。
现在,我们需要在 Second.aspx 中添加一个标签 Web 控件,其 ID
属性为“Results”。我们要在此标签 Web 控件中显示传入的 TextBoxValue QueryString 变量的值。为此,我们需要查看 Second.aspx 的源代码部分(要查看源代码部分,请在解决方案资源管理器中右键单击 Second.aspx 并选择 View Code [查看代码])。注意,该源代码部分包含一个名为 Page_Load 的子例程。每次加载 ASP.NET Web 页面时都将执行一次该子例程,加载页面后所需要执行的代码就放在该子例程中。因此,我们在 Page_Load 事件处理程序中添加以下代码行:
Results.Text = Request.QueryString("TextBoxValue")
Request.QueryString()
是传递给该页面的 QueryString 变量的 NameValueCollection。要访问名为“name”的特定 QueryString 变量的值,请使用语法:Request.QueryString("name")
。
要演示将值从一个 Web 窗体传递到另一个窗体的操作,请转到 Debug(调试)并选择 Start(开始)选项。这将编译此源代码并在浏览器中显示 First.aspx。在文本框中键入“Hello, World!”,然后单击按钮。这将转到 Second.aspx 并在 QueryString 中传递“Hello, World!”的转义版本“Hello%2c+World!”。取消转义后的 QueryString 变量值将显示在 Second.aspx 的标签 Web 控件中,并生成如图 10 所示的输出结果。
图 10:显示 TextBoxValue QueryString 变量
请注意,还有其他方法可以将信息从一个 Web 窗体传递到另一个 Web 窗体,但本文不再对此进行赘述。
小结
本文介绍了使用 ASP.NET 开发 Web 应用程序与传统的 Windows 桌面应用程序开发之间日益增加的相似性。与设计桌面应用程序一样,使用 Visual Studio .NET 设计 ASP.NET 应用程序也需要使用 Web 控件在 WYSIWYG 设计器中创建图形用户界面。但用户界面中没有包含由类组成的 ASP.NET Web 页面的源代码部分。
虽然桌面应用程序与 Web 应用程序之间有很多相似之处,但还是有一些重要的差别。这些差别会限制最终用户的总体感受。其中最根本的差别是用于部署桌面应用程序和 Web 应用程序的媒介的不同。具体地讲,桌面应用程序的各个组件可以彼此连接并具有状态,而 Web 应用程序的前端和后端之间存在一个物理分隔。这种分隔限制了 Web 站点用户界面的响应性能,并使得在 Visual Basic 桌面应用程序环境中很容易完成的某些任务在 Web 环境中变得难以完成。
如果您已经开始对 ASP.NET 感兴趣(这正是我所希望的),那么我建议您参考以下资源以便继续学习 ASP.NET。
- ASP.NET Kick Start,作者:Stephen Walther。(ISBN: 0672324768)
- 4GuysFromRolla.com
- ASPAlliance.com
这些印刷资源和 Web 资源可帮助您了解 ASP.NET。除上述资源外,还有许多很好的地方,您可以在那里提出有关 ASP.NET 的问题并获得快速、准确的回答。如果您喜欢访问联机论坛,则可以利用 ASP.NET Forums,它是一个非常活跃的论坛,其中汇集了各种水平的 ASP.NET 开发人员。如果您希望使用电子邮件列表服务,请在 ASPAdvice.com 中注册,那里有许多很有针对性的列表服务,您可以选择自己所需要的服务。
尽情享受编程的乐趣吧!
作者简介
Scott Mitchell 著有五本关于 ASP/ASP.NET 的书籍,是 4GuysFromRolla.com 站点的创始人,过去五年来一直从事 Microsoft Web 技术方面的研究。Scott 是 ASP 和 ASP.NET 社区非常活跃的一名成员,十分热爱 ASP 和 ASP.NET 技术,并非常愿意帮助其他人了解这些令人振奋的技术。有关 DataGrid、DataList 和 Repeater 控件的详细信息,请参阅 Scott 的著作《ASP.NET Data Web Controls Kick Start》(ISBN 为 0672325012)。