ASP.NET開發,簡化與封裝


微軟的ASP.NET的開發,就是面向對象的編程,當然前端也能體驗至面向對象的話,使用Web控件也必須的。

任一控件,我們均可以在后端.aspx.cs或.aspx.vb程序中new一個對象出來。

很多場合里,在開發ASP.NET開發中,后端與前端交互,我們使用控件確實能方便與快捷互通。

本篇所涉及的內容以html markup標簽與javascript(或jQuery)無關,因為演示的是Web控件應用。Insus.NET經常會針對開發的應用程序,寫一些常用或是特定的對象或是控件。在一起開發的團隊的能句方便用使用,能得到客戶需求的功能與效果。

開發這些對象或是控件,也並非一開始就能寫得出來,均是經過一系列編程之后,再次review或是優化的結果。

舉個例子來說明,先在SQL Server數據庫中,創建一個數據表,如[dbo].[UserInfo]:


對這個表,添加幾筆記錄:


寫一個存儲過程,是獲取剛才添加的所有記錄:

OK,數據庫層已經設計好了,我們去ASP.NET網站寫程序,需要把這些數據呈現於網頁上。
邏輯層就使用《ASP.NET開發,從二層至三層,至面向對象 (3)http://www.cnblogs.com/insus/p/3826706.html 將來的的博文演示中也會使用它。

在App_Code目錄下,創建一個以數據表名相同的一個類(對象):

 
新建一個網頁.aspx,用它來呈現數據表的數據,直接拉數據控件GridView:



在.aspx.cs代碼中,實現給GridView控件綁定數據:

 

瀏覽一下:


以上的實現,相信很多學習與開發asp.net的人都會,太簡單了,根本不值得一說一提一寫。

 
問題來了,最后一列[Sex],性別具體1代碼是男還是女,反之亦如此。能否以更友好清晰的表達來表現?下面列幾種網友用常的方法:
第一種方法,寫一個小函數去替換:

 
寫好函數之后,在.aspx的Gridview控件,需要修改,不能使用自動產生列了:


預覽結果:


第二種方法,較為復雜一些,不過也較常使用的,在.aspx分三步來修改GridView:

 

下面是實現OnRowDataBound="GridView1_RowDataBound":



此種方法預覽結果跟第一種方法是一樣的。

第三種方法,是Insus.NET使用的方法。出現這樣的問題,多數是多表關聯,一張表某些字段是另一個表的外鍵值。呈現時,均是鍵值或是代號。但實際是需要顯示實際意義的字段。

解決它,可以創建一個表,是key與value對應的表:



然后修改一下[dbo].[usp_UserInfo_GetAll]存儲過程:

 

在asp.net程序中,在后端無需修心任代碼。


在.aspx頁中的GridView中,僅引用另一個字段名:


三種方法,均演示完成了。哪一種方法,你覺得好,就使參考哪一種。

下面有新的要求,客戶要求,將顯示的0或1的信息,使用一張圖片來替代。
這要求不難,用文字“男”或“女”還是用圖片去替代0或1的方法,均是一樣的。用Image去實現就是了。下面Insus.NET來演示一番:
實現之前,得先准備好兩張圖片,放於站點某一目錄之下。

 

上面有三個步驟標記1至標記3。

 編寫一個私有函數:


然后就可以寫 OnRowDataBound="GridView1_RowDataBound"事件了:

 

改好了,瀏覽看看效果:

 
上面圖片替換方法,是通用大家所使用的方法。不過Insus.NET的方法,卻不是這樣來做。Insus.NET需要封裝 GetSexImagePath(string num)或是GetSex(string num)函數

另外,由這地方的呈現在一個網站中,也許不止一次(網頁)呈現,在管理員后台,會員后台,前端面向所有用戶呈現的網頁均要此樣式呈現。


因此,可以寫成一個控件即可,先在App_Code創建一個類別SexImg:


有三個public的property以及override方法RenderContents()。重要的一點,是繼承了WebControl類。

接着,我們打開web.config文件,注冊一下上面我們創建好的控件:

 

現在的問題是怎樣使用這個控件呢?跟Web控件一樣,沒有什么分別:

 


在GridView控件內,使用剛才寫好的控件,直接指寫三個property。

在.aspx.cs內,無需寫什么代碼:

 

瀏覽的效果,跟上面的一樣:

 

最后一個演示,學會了封裝與創建自己定義控件。Insus.NET雖然只是依性別來舉列,實現開發時,可會遇上很多類別,目錄等相關的。

方法掌握了,相似的功能可以輕易實現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM