UpdatePanel 控件可以简化 ASP.NET 网页的部分页呈现,因为 ASP.NET 的 AJAX 功能可自动管理异步回发请求和更新。您还可利用 AJAX 功能,在浏览器中通过使用 ECMAScript (JavaScript) 来调用 ASP.NET Web 服务。通过使用客户端脚本来调用 Web 服务的优点之一是等待 Web 服务请求的响应时不会阻塞浏览器。用户可以继续工作,而不用等待 Web 服务处理完毕请求。
先决条件
若要在您自己的开发环境中实现这些过程,您需要:
Microsoft Visual Studio 2005 或 Visual Web Developer 速成版。
一个支持 AJAX 的 ASP.NET 网站。
访问 Northwind 数据库和 Web.config 文件中定义的名称为 NorthwindConnectionString 的连接字符串。
创建 Web 服务
首先,创建一个可调用的 Web 服务。
创建 Web 服务以返回产品数量
在支持 AJAX 的 ASP.NET 网站中,创建一个名称为 ProductQueryService.asmx 的新 Web 服务文件。
在 Web 服务代码中,导入 N:System.Data、N:System.Data.SqlClient、System.Configuration 和 N:System.Web.Script.Services 命名空间。
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Web.Script.Services
这些命名空间的类型将用于您将要创建的 Web 服务方法中。
将 ProductQueryService 类放入名为 Samples 的命名空间中。
给类添加 ScriptServiceAttribute 属性。
此属性使得可从客户端脚本调用 Web 服务。
使用下面的 GetProductQuantity 方法替换默认 HelloWorld 方法。
<WebMethod()> _
Public Function GetProductQuantity(ByVal productID As String) As String
Dim cn As SqlConnection = _
New SqlConnection(ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString)
Dim cmd As SqlCommand = _
New SqlCommand("SELECT [UnitsInStock] FROM [Alphabetical list of products] WHERE ([ProductID] = @ProductID)", cn)
cmd.Parameters.AddWithValue("productID", productID)
Dim unitsInStock As String = ""
cn.Open()
Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Do While dr.Read()
unitsInStock = dr(0).ToString()
Loop
End Using
System.Threading.Thread.Sleep(3000)
Return unitsInStock
End Function