|
Page,我想每個(gè)ASP.NET開(kāi)發(fā)人員對(duì)它應(yīng)該都是比較熟悉的。 這次的博客我就打算專門談?wù)勊?。不過(guò)呢,我不打算說(shuō) 在Page中使用控件的一些話題,也不會(huì)說(shuō)Page的生命周期的相關(guān)話題,因?yàn)槲艺J(rèn)為這些話題被人談?wù)摰拇螖?shù)實(shí)在是太多了,尤其是市面上的ASP.NET的書籍,都會(huì)比較喜歡這些話題。 我不喜歡重復(fù),因此今天我只想談些人家不談的那點(diǎn)事,但我認(rèn)為它們?nèi)匀缓苤匾?/p> 一些重要的Page指令 雖然Page公開(kāi)了很多屬性,讓我們可以在運(yùn)行時(shí)調(diào)整它的狀態(tài)與行為,但是,還有些重要的參數(shù)卻是以“指令”方式提供的,需要在設(shè)計(jì)時(shí)就指定。 下面是我整理的一些我認(rèn)為 比較重要并且經(jīng)常需要使用的指令:
web.config的全局設(shè)置 前面我介紹了一些常用的Page指令,考慮到方便性,ASP.NET還允許我們?cè)趙eb.config中為一些常用的指令配置默認(rèn)值。下面我就一些常用的場(chǎng)景來(lái)說(shuō)明這些全局配置的方便性。 1. 通常,我在創(chuàng)建一個(gè)網(wǎng)站項(xiàng)目時(shí),肯定會(huì)決定不使用ViewState和Session的。那么如果為每個(gè)頁(yè)面設(shè)置EnableViewState,EnableSessionState指令屬性,那就顯得太麻煩了,而且還容易遺漏。此時(shí),我們可以直接在web.config中為這些參數(shù)指定一個(gè)全局的默認(rèn)值:
補(bǔ)充說(shuō)明一下:全局禁用Session的徹底方法是把Session對(duì)應(yīng)的HttpModule從httpModules列表中移除。 web.config允許我們?cè)O(shè)置Page默認(rèn)參數(shù)的具體配置節(jié)如下:
2. 為了代碼重用,設(shè)計(jì)用戶控件也是很常用的方法。 我們可以使用 @ Register指令 在頁(yè)面注冊(cè)需要使用的UserControl或者WebControl。然而,有些控件比較通用,許多頁(yè)面都會(huì)使用它,那么就不要再使用 @ Register指令了,可以在web.config中統(tǒng)一注冊(cè)。例如:
有了這個(gè)定義后,我就可以在任何頁(yè)面中直接使用:
3. 對(duì)于喜歡使用頁(yè)面內(nèi)聯(lián)代碼的人來(lái)說(shuō),可能經(jīng)常需要使用自己定義的類型。如果這些類型定義在某個(gè)命名空間中,那么就需要在內(nèi)聯(lián)代碼中采用完整命名空間的寫法。雖然這樣做沒(méi)有什么問(wèn)題,但就是麻煩,于是,我們可以在頁(yè)面中使用 @ Import指令 來(lái)導(dǎo)入我們需要使用的命名空間,但是這個(gè)指令每次只能導(dǎo)入一個(gè)命名空間,而且每個(gè)頁(yè)面還得重復(fù)導(dǎo)入,顯然不夠方便。 為了方便使用一些常用的命名空間,我們可以在web.config中統(tǒng)一指定,例如:
這樣設(shè)置后,所有頁(yè)面就可以直接使用這些命名空間下的類型了。 不知道有些人想過(guò):為什么在頁(yè)面中使用某些微軟提供的類型就不需要導(dǎo)入命名空間? 答案是:其實(shí)ASP.NET已經(jīng)將一些微軟認(rèn)為常用的命名空間在web.config中配置好了:
4. 現(xiàn)在,有越來(lái)越多的人為了方便而使用擴(kuò)展方法。使用擴(kuò)展方法的好處是:可以讓我們不去關(guān)心這些擴(kuò)展方法定義在那個(gè)類中,只要在支持?jǐn)U展方法的對(duì)象上調(diào)用就可以了,就像下面的代碼這樣:
然而,在頁(yè)面中使用擴(kuò)展方法時(shí),也必須先導(dǎo)入擴(kuò)展方法的定義類的命名空間。 因此,為了方便,我們可以在web.config中為我們定義的擴(kuò)展方法導(dǎo)入相應(yīng)的命名空間:
|
|
|
來(lái)自: 昵稱10504424 > 《Asp.Net》