我們將要編寫的c#元件同時作為邏輯層和資料訪問層。
如果打算將來把程式移植到另一種資料庫中,比如oracle,那麼需要把邏輯層和資料訪問層分別放在兩個元件中。本文中只使用sql server,所以不需要分開它們。
這個應用程式需要兩個頁面:default.aspx 和 productlist.aspx。 default.aspx 是使用者訪問web首先看見的頁面,它列出所有的產品種類。使用者從default.aspx選單中選擇種類後,將進入productlist.aspx頁面,這個頁面顯示了當前類所有產品的列表。
在使用者使用這兩個頁面的過程中,發生了兩個動作:第乙個是在選單中列出產品種類(default.aspx),第二個是在產品列表的頁面中列出產品(productlist.aspx)。我們可以建立兩個函式來完成這兩個任務,這兩個函式都通過呼叫儲存過程獲取資料。對應這兩個函式,我們在乙個叫做commercedotnet的名字空間中建立起兩個類:category 和 product。(圖1)使用commercedotnet.categories例項化categories類,使用commercedotnet.products例項化products類。為了使**清晰,我們在不同的檔案中分別宣告這兩個類。由於他們共享乙個名字空間,即使在不同的檔案宣告,在編譯後也將成為乙個單獨的元件。
categorylist方法傳遞了乙個包含所有產品種類的資料集給系統。在categories類中加入categorylist的方法。
**如下:
namespace commercedotnet
} }
建立了這個類以後,開始為categorylist方法新增**。
categorylist方法獲取資料的過程分為四步:1.通過sqlconnection和sqldatasetcommand物件建立資料連線和命令物件。2.把命令物件型別設定為儲存過程。3.把儲存過程listcategory的結果送入資料集。4.把包含結果的資料集返回給呼叫它的函式。
完整的categorylist方法**如下:
public dataset categorylist()
productslist方法和categorylist方法類似,但是productslist向儲存過程傳遞了乙個引數。
**如下:
public dataset productslist(int categoryid)
兩個類都建立好以後,編譯程式。
使用命令:csc /out:../bin/commercedotnet.dll /t:library /r:system.data.dll categorydb.cs productdb.cs
"/out:"開關指定編譯庫名和存放位置,"/t:"開關告訴編譯器建立庫,"/r:"開關指出元件涉及到的其他庫,完整的源程式在文末後面列出。
asp+頁面的開發
建立好元件以後,下面的工作是開發作為使用者介面asp+頁面。前面的部分,我們設計了default.aspx 和 productslist.aspx 頁,default.aspx頁是站點被裝入後的第一頁,我們就從建立這個預設頁面開始。
當頁面讀入時,觸發page_load()方法,這個方法完成了從資料庫獲取的資料並繫結到mylist的任務。首先,宣告乙個icollection型變數menuitems。然後,例項化元件,呼叫categorylist方法,把資料集存放在menuitems物件中。設定mylist的資料來源為menuitems。執行mylist.databind方法把資料繫結到mylist。
這部分**如下:
Web應用程式 建立專案
背景 利用django來開發乙個名為 學習筆記 的專案。目的 編寫乙個名為 學習筆記 的web應用程式,讓使用者能夠記錄感興趣的主題,並在學習每個主題的 過程中新增日誌條目。功能 學習筆記 的主頁對這個 進行描述,並邀請使用者 註冊或登陸。使用者登陸後,可以建立新主題 新增新條目以及閱讀既有的條目。...
用XSL翻譯Web服務應用程式
web 服務應用 程式存在的乙個常見問題是,真正的後端軟體不支援xml 或者至少不支援你 web服務所使用的標準化的xml 要解決這個問題,很多架構都實施了乙個 翻譯階段,用來解釋收到的xml,並將它轉換成為後端系統能夠識別的更加適當的格式。雖然將xml 翻譯成不同的格式有很多種方式法,但是可擴充套...
建立基於 DOM 的 Web 應用程式
我們首先建立乙個非常簡單的應用程式,然後再新增一點 dom 魔法 原始 替換 更加簡單的方法 imgparent.insertbefore newimage,hatimage imgparent.removechild hatimage 改為 imgparent.replacechild newim...