ASP.NET开发,简化与封装
微軟的ASP.NET的開發(fā),就是面向?qū)ο蟮木幊?#xff0c;當(dāng)然前端也能體驗(yàn)至面向?qū)ο蟮脑?#xff0c;使用Web控件也必須的。
任一控件,我們均可以在后端.aspx.cs或.aspx.vb程序中new一個(gè)對(duì)象出來(lái)。
很多場(chǎng)合里,在開發(fā)ASP.NET開發(fā)中,后端與前端交互,我們使用控件確實(shí)能方便與快捷互通。
本篇所涉及的內(nèi)容以html markup標(biāo)簽與javascript(或jQuery)無(wú)關(guān),因?yàn)檠菔镜氖荳eb控件應(yīng)用。Insus.NET經(jīng)常會(huì)針對(duì)開發(fā)的應(yīng)用程序,寫一些常用或是特定的對(duì)象或是控件。在一起開發(fā)的團(tuán)隊(duì)的能句方便用使用,能得到客戶需求的功能與效果。
開發(fā)這些對(duì)象或是控件,也并非一開始就能寫得出來(lái),均是經(jīng)過(guò)一系列編程之后,再次review或是優(yōu)化的結(jié)果。
舉個(gè)例子來(lái)說(shuō)明,先在SQL Server數(shù)據(jù)庫(kù)中,創(chuàng)建一個(gè)數(shù)據(jù)表,如[dbo].[UserInfo]:
對(duì)這個(gè)表,添加幾筆記錄:
寫一個(gè)存儲(chǔ)過(guò)程,是獲取剛才添加的所有記錄:
OK,數(shù)據(jù)庫(kù)層已經(jīng)設(shè)計(jì)好了,我們?nèi)SP.NET網(wǎng)站寫程序,需要把這些數(shù)據(jù)呈現(xiàn)于網(wǎng)頁(yè)上。
邏輯層就使用《ASP.NET開發(fā),從二層至三層,至面向?qū)ο?(3)》 http://www.cnblogs.com/insus/p/3826706.html?將來(lái)的的博文演示中也會(huì)使用它。
在App_Code目錄下,創(chuàng)建一個(gè)以數(shù)據(jù)表名相同的一個(gè)類(對(duì)象):
?
新建一個(gè)網(wǎng)頁(yè).aspx,用它來(lái)呈現(xiàn)數(shù)據(jù)表的數(shù)據(jù),直接拉數(shù)據(jù)控件GridView:
在.aspx.cs代碼中,實(shí)現(xiàn)給GridView控件綁定數(shù)據(jù):
?
瀏覽一下:
以上的實(shí)現(xiàn),相信很多學(xué)習(xí)與開發(fā)asp.net的人都會(huì),太簡(jiǎn)單了,根本不值得一說(shuō)一提一寫。
?
問(wèn)題來(lái)了,最后一列[Sex],性別具體1代碼是男還是女,反之亦如此。能否以更友好清晰的表達(dá)來(lái)表現(xiàn)?下面列幾種網(wǎng)友用常的方法:
第一種方法,寫一個(gè)小函數(shù)去替換:
?
寫好函數(shù)之后,在.aspx的Gridview控件,需要修改,不能使用自動(dòng)產(chǎn)生列了:
預(yù)覽結(jié)果:
第二種方法,較為復(fù)雜一些,不過(guò)也較常使用的,在.aspx分三步來(lái)修改GridView:
?
下面是實(shí)現(xiàn)OnRowDataBound="GridView1_RowDataBound":
此種方法預(yù)覽結(jié)果跟第一種方法是一樣的。
第三種方法,是Insus.NET使用的方法。出現(xiàn)這樣的問(wèn)題,多數(shù)是多表關(guān)聯(lián),一張表某些字段是另一個(gè)表的外鍵值。呈現(xiàn)時(shí),均是鍵值或是代號(hào)。但實(shí)際是需要顯示實(shí)際意義的字段。
解決它,可以創(chuàng)建一個(gè)表,是key與value對(duì)應(yīng)的表:
然后修改一下[dbo].[usp_UserInfo_GetAll]存儲(chǔ)過(guò)程:
?
在asp.net程序中,在后端無(wú)需修心任代碼。
在.aspx頁(yè)中的GridView中,僅引用另一個(gè)字段名:
三種方法,均演示完成了。哪一種方法,你覺得好,就使參考哪一種。
下面有新的要求,客戶要求,將顯示的0或1的信息,使用一張圖片來(lái)替代。
這要求不難,用文字“男”或“女”還是用圖片去替代0或1的方法,均是一樣的。用Image去實(shí)現(xiàn)就是了。下面Insus.NET來(lái)演示一番:
實(shí)現(xiàn)之前,得先準(zhǔn)備好兩張圖片,放于站點(diǎn)某一目錄之下。
?
上面有三個(gè)步驟標(biāo)記1至標(biāo)記3。
?編寫一個(gè)私有函數(shù):
然后就可以寫?OnRowDataBound="GridView1_RowDataBound"事件了:
?
改好了,瀏覽看看效果:
?
上面圖片替換方法,是通用大家所使用的方法。不過(guò)Insus.NET的方法,卻不是這樣來(lái)做。Insus.NET需要封裝?GetSexImagePath(string num)或是GetSex(string num)函數(shù)
另外,由這地方的呈現(xiàn)在一個(gè)網(wǎng)站中,也許不止一次(網(wǎng)頁(yè))呈現(xiàn),在管理員后臺(tái),會(huì)員后臺(tái),前端面向所有用戶呈現(xiàn)的網(wǎng)頁(yè)均要此樣式呈現(xiàn)。
因此,可以寫成一個(gè)控件即可,先在App_Code創(chuàng)建一個(gè)類別SexImg:
有三個(gè)public的property以及override方法RenderContents()。重要的一點(diǎn),是繼承了WebControl類。
接著,我們打開web.config文件,注冊(cè)一下上面我們創(chuàng)建好的控件:
?
現(xiàn)在的問(wèn)題是怎樣使用這個(gè)控件呢?跟Web控件一樣,沒有什么分別:
?
在GridView控件內(nèi),使用剛才寫好的控件,直接指寫三個(gè)property。
在.aspx.cs內(nèi),無(wú)需寫什么代碼:
?
瀏覽的效果,跟上面的一樣:
?
最后一個(gè)演示,學(xué)會(huì)了封裝與創(chuàng)建自己定義控件。Insus.NET雖然只是依性別來(lái)舉列,實(shí)現(xiàn)開發(fā)時(shí),可會(huì)遇上很多類別,目錄等相關(guān)的。
方法掌握了,相似的功能可以輕易實(shí)現(xiàn)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/insus/p/3869575.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET开发,简化与封装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 性能报告之路由器性能benchmark评
- 下一篇: 局域网测试工具、局域网UDP、TCP端口