Asp.Net開發架構設計(二)

我們配置了一下UnityConfig層,在這個層中定義了一個IContainerAccessor的接口和一個返回IUnityContainer類型的方法,這個方法的主要作用就是把Service層中的接口類和Business層中的接口實現類裝配到UnityContainer中並返回,也就是指定那個接口實現類去實現某個接口類(暈,好像有點繞口啊)。

 

Xiaozhuang.UnityConfig

 

好了,現在終於輪到Web層了,要實現在Asp.Net頁面中直接調用能夠服務接口而不用從Unity容器中再去取出來,就要把Unity容器中的接口注入到頁面中去,分兩步走:第一步,在Global.Asax.cs中實現UnityConfig層中的IContainerAccessor接口,並把UnityConfig層返回的IUnityContainer賦值給實現接口的全局靜態屬性。

 

Code

接下來要把UnityContainer中的接口注入到頁面中去。建立一個BasePage的泛型類,先獲取到從Gloab.Asax傳過來的應用程序實例,轉化爲UnityContainer,利用BuildUp方法注入到頁面中去。

 

BasePage

我們不止在頁面中要調用接口,也要在UserControl中調用,那麼我們就參照上面的頁面基類建立一個UserControl的泛型基類。

 

BaseUserControl

接下來我們建立一個UserControl文件,在裏面調用查詢僱員的服務接口,並綁定到ListView控件上,具體代碼如下:

 

Code

這個EmployeeList繼承自BaseUserControl<T>.UserControl基類,這樣這個用戶控件就可以實現注入了,我們只需要在屬性上增加Dependency標記就可以用屬性注入的方式來調用接口方法,當然你也可以通過方法注入的方式來實現。
接下來我們要用Asp.net Ajax調用這個UserControl來生成HTML,給頁面上使用,我們先建立兩個類ControlPage和ViewManager

 

Code

ControlPage類是一個簡單的繼承Page的類,裏面重載VerifyRenderingInServerForm方法的作用是防止在UserControl生成HTML的時候如果UserControl中有服務器控件而出現的“服務器控件必須放在Form ruanat=‘server’”的錯誤!ViewManager類的作用是把在服務器端UserControl裝在ControlPage頁面中用Excute方法執行一遍並用Render方法獲取到執行後輸出的HTML字符串。
接下來我們到頁面中去,在頁面類中建立一個輸出HTML的靜態帶WebService標記的方法,如下

 

Code

這個方法的作用是吧查詢的參數傳遞給EmployeeList用戶控件,通過ViewManager執行並輸出HTML字符串,在Aspx頁面中用Asp.Net Ajax代碼來調用這個方法,並把返回的html填充到相應的Div中。如下

 

Code

 

至此寫完,其實這個生成html的方法我用了很久了,本來這次是寫架構設計的,給扯到這上面來了,也許這也算是架構設計的一部分吧。
運行效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章