QueryString 翻譯成查詢字串,是最簡單的網頁與伺服器之間的問答機制,下面是一個簡單的詢問商品價格的示範網頁範例,請建立一個ASP.NET網站,先在網站內加入一個文字檔名為 Price.txt 內容如下:

再到網頁上設計如下的介面:

完整程式碼如下:包括網頁一開始載入時如有詢價動作會找到答案回覆,以及按鍵提出詢價的動作。

執行網頁打入品名,如果在價目表之內就會回應如:牛肉麵:80元這樣的結果!

從視窗程式問網站售價的範例

上例中的Uri函數是網址列訊息的特殊編碼方式,看過很多網址列像這樣的『亂象』嗎?
http://tw.search.yahoo.com/search?fr=yfp&ei=UTF-8&p=%E5%BC%B5%E9%80%B8%E4%B8%AD
上例是老師到Yahoo搜尋『張逸中』關鍵字的網址列反應。分析一下:
Part 1網址:http://tw.search.yahoo.com/search
Part 2參數:fr=yfp,並以 ? 與網址區隔
Part 3更多參數:ei=UTF-8...每個參數以 & 區隔。
至於奇怪的亂碼%E5%BC%B5%E9%80%B8%E4%B8%AD是中文字經過 編碼的結果,簡單說因為http通訊協定的網址訊息還沒有容納多種編碼的能力,所以中文字無法直接傳送,必須先轉碼。本單元來看看這種參數傳遞如何幫我們搜尋資料庫。


資料庫查詢的範例:資料庫下載

試試看使用Yahoo網路字典時網址列的反應。
在網址列直接打入查詢字串,測試網路字典的反應。

使用查詢字串查詢資料的程式:
說明:
以下是一個類似網路字典的搜尋程式,資料庫是校內一些專有名詞的中英文對照表,輸入查詢字串之後使用之前學過的 Like 搜尋機制即可調閱出需要的資料。

1.開啟新網站,下載資料庫到專案內(先看看資料庫的內容)
2.在網頁上佈置一個文字方塊、一個按鍵以及一個資料表
3.設定資料表的Where條件

4.執行程式在網址列後面加上『?qq=Pro』會出現如下畫面,資料庫的英文欄有Pro的資料都會被叫出。

上面的方式可以順利的在網址列輸入搜尋字串,但是中文字直接輸入網址列通常就不行了!必須藉助ASP的伺服端程式幫忙,請先將上述資料表條件改為中文搜尋,

在上面的 Search 按鍵輸入程式:
Response.Redirect("Default.aspx?qq=" + TextBox1.Text)

Server.Transfer("Default.aspx?qq=" + TextBox1.Text)
其中的Default.aspx應該指本網頁名稱,TextBox1為輸入搜尋字串的控制項
按下Search鍵之後你會看到網址顯示的是 Url編碼的結果。

挑戰:
1.如何讓上例網頁可以同時接受中英文查詢?
2.如何讓程式在使用者按下 Enter 鍵時執行?

建立一個可以用學號查詢姓名的網頁
作法如下:
1.下載這個資料庫
2.開啟專案,將資料庫置入
3.佈置一個GridView,設定資料來源顯示資料表M,只顯示不重複姓名資料。
4.設定條件

5.仿照上一範例完成搜尋介面即可

更複雜的查詢:某同學某天的課
1.開啟新網頁
2.佈置一個文字盒用於輸入學號
3.佈置一個下拉式選單(DropDownList),手動建立選項(Items)從『一』到『五』
4.開啟另一網頁,佈置一個GridView,設定查詢字串變數,學號部份如前,週日部份如下

5.佈置一個查詢按鍵(第一個網頁)寫程式如下:
Response.Redirect("目標網頁名稱?id=" + TextBox1.Text + "&cday=" + DropDownList1.SelectedValue)