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