小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ASP.NET Page那點(diǎn)事(1)

 昵稱10504424 2012-09-11

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)值:

  1. <pages enableViewState="false" enableSessionState="false"></pages> 
  2.  

補(bǔ)充說(shuō)明一下:全局禁用Session的徹底方法是把Session對(duì)應(yīng)的HttpModule從httpModules列表中移除。

web.config允許我們?cè)O(shè)置Page默認(rèn)參數(shù)的具體配置節(jié)如下:

  1. <pages       
  2.    buffer="[True|False]" 
  3.    enableEventValidation="[True|False]" 
  4.    enableSessionState="[True|False|ReadOnly]" 
  5.    enableViewState="[True|False]" 
  6.    enableViewStateMac="[True|False]" 
  7.    smartNavigation="[True|False]" 
  8.    autoEventWireup="[True|False]" 
  9.    pageBaseType="typename, assembly" 
  10.    userControlBaseType="typename" 
  11.    validateRequest="[True|False]" 
  12.    masterPageFile="file path"   
  13.    theme="string" 
  14.    styleSheetTheme="string" 
  15.    maxPageStateFieldLength="number"   
  16.    compilationMode="[Always|Auto|Never]"   
  17.    pageParserFilterType="string"   
  18.    viewStateEncryptionMode="[Always|Auto|Never]"   
  19.    maintainScrollPositionOnPostBack="[True|False]"   
  20.    asyncTimeout="number" 
  21. > 
  22.    <controls>...</controls> 
  23.    <namespaces>...</namespaces> 
  24.    <tagMapping>...</tagMapping> 
  25. </pages> 

2. 為了代碼重用,設(shè)計(jì)用戶控件也是很常用的方法。

我們可以使用 @ Register指令 在頁(yè)面注冊(cè)需要使用的UserControl或者WebControl。然而,有些控件比較通用,許多頁(yè)面都會(huì)使用它,那么就不要再使用 @ Register指令了,可以在web.config中統(tǒng)一注冊(cè)。例如:

  1. <pages> 
  2.     <controls> 
  3.         <add tagPrefix="fish" tagName="MainMenu" src="~/Controls/MainMenu.ascx" /> 
  4.         <add tagPrefix="fish" tagName="PageHeader" src="~/Controls/PageHeader.ascx" /> 
  5.     </controls> 
  6. </pages> 

有了這個(gè)定義后,我就可以在任何頁(yè)面中直接使用:

  1. <fish:PageHeader runat="server" ID="PageHeader1" /> 

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)一指定,例如:

  1. <pages> 
  2.     <namespaces> 
  3.         <add namespace="MyMVC" /> 
  4.         <add namespace="WebSiteCommonLib" /> 
  5.         <add namespace="WebSiteModel" /> 
  6.     </namespaces> 
  7. </pages> 

這樣設(shè)置后,所有頁(yè)面就可以直接使用這些命名空間下的類型了。

不知道有些人想過(guò):為什么在頁(yè)面中使用某些微軟提供的類型就不需要導(dǎo)入命名空間?

答案是:其實(shí)ASP.NET已經(jīng)將一些微軟認(rèn)為常用的命名空間在web.config中配置好了:

  1. <pages> 
  2.     <namespaces> 
  3.         <add namespace="System"/> 
  4.         <add namespace="System.Collections"/> 
  5.         <add namespace="System.Collections.Specialized"/> 
  6.         <add namespace="System.Configuration"/> 
  7.         <add namespace="System.Text"/> 
  8.         <add namespace="System.Text.RegularExpressions"/> 
  9.         <add namespace="System.Web"/> 
  10.         <add namespace="System.Web.Caching"/> 
  11.         <add namespace="System.Web.SessionState"/> 
  12.         <add namespace="System.Web.Security"/> 
  13.         <add namespace="System.Web.Profile"/> 
  14.         <add namespace="System.Web.UI"/> 
  15.         <add namespace="System.Web.UI.WebControls"/> 
  16.         <add namespace="System.Web.UI.WebControls.WebParts"/> 
  17.         <add namespace="System.Web.UI.HtmlControls"/> 
  18.     </namespaces> 
  19. </pages> 

4. 現(xiàn)在,有越來(lái)越多的人為了方便而使用擴(kuò)展方法。使用擴(kuò)展方法的好處是:可以讓我們不去關(guān)心這些擴(kuò)展方法定義在那個(gè)類中,只要在支持?jǐn)U展方法的對(duì)象上調(diào)用就可以了,就像下面的代碼這樣:

  1. 當(dāng)前用戶已登錄,登錄名:<%= Context.User.Identity.Name.HtmlEncode() %> 

然而,在頁(yè)面中使用擴(kuò)展方法時(shí),也必須先導(dǎo)入擴(kuò)展方法的定義類的命名空間。

因此,為了方便,我們可以在web.config中為我們定義的擴(kuò)展方法導(dǎo)入相應(yīng)的命名空間:

  1. <pages> 
  2.     <namespaces> 
  3.         <add namespace="FishDemoCodeLib" /> 
  4.     </namespaces> 
  5. </pages> 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多