ASP.NET 2.0 中的代碼隱藏和編譯
2006/12/22 23:33:50
代碼隱藏

    雖然該代碼隱藏模型在 2.0 中是不同的,但是它的語法已經進行了少量更改。實際上,該更改十分細微,如果您不仔細查看,甚至都無法注意到它。圖 1 顯示新的代碼隱藏語法。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  該模型與以前的 1.x 模型有兩個區別 — 在 @ Page 指令中引入了 CodeFile 屬性,以及將代碼隱藏類聲明為部分類。當開始生成該頁時,您將注意到另一個區別 — 服務器端控件不再需要在代碼隱藏類中顯式聲明,但是您仍然能夠以編程方式完整地訪問它們。例如,圖 2 中的窗體有若干個在代碼隱藏文件中以編程方式使用的服務器端控件,但是您可以注意到,代碼隱藏類中缺少任何顯式控件聲明。
其中的原因與應用于代碼隱藏類的部分關鍵字有關。除了使用呈現該頁的方法將 .aspx 文件轉換為一個類定義(正如它已經做的一樣),ASP.NET 現在也為包含受保護控件成員變量聲明的代碼隱藏類生成一個同輩部分類。然后,您的類與該生成的類定義一起編譯,并用作針對 .aspx 文件生成的類的基類。結果是,您基本上以經常使用的方式編寫代碼隱藏類,但是您不再需要聲明(或讓服務器為您聲明)服務器端控件的成員變量聲明。這一直是 1.x 中一個不太穩定的關系,因為如果您無意間修改了一個控件聲明,使得它不再與該窗體上所聲明控件的 ID 匹配,就會突然停止工作。現在,成員變量以隱式方式聲明并始終是正確的。圖 3 顯示所涉及類集的一個示例。
請注意,該部分類模型僅當在 @ Page 指令中使用 CodeFile 關鍵字時使用。如果使用不帶 CodeFile(或者帶有 src 屬性)的 Inherits 關鍵字,ASP.NET 會使用 1.x 代碼隱藏類型并簡單地將類設置為 .aspx 文件的唯一基類。此外,如果您根本沒有代碼隱藏,則類生成與它在 1.x 中的操作將完全相同。由于 ASP.NET 2.0 向后與 1.x 兼容,因此現在有大量代碼隱藏選項供您使用。
Visual Studio 2005 將使用任何 Web 窗體新的部分類隱藏模型,而且如果您使用轉換向導,它也將很好地轉換 Visual Studio .NET 2003 項目以便使用新模型。因為 ASP.NET 2.0 的一些新功能依賴于它的原因,所以如果可能,最好將所有文件轉換為新代碼隱藏模型(如果使用 Visual Studio,那么轉換幾乎是唯一的選擇,因為 Visual Studio 2005 不會打開未轉換的 1.x 項目)。例如,對 Profile 屬性包的強類型訪問添加到 2.0 中代碼隱藏類的同輩部分類中,但是如果您使用 1.x 代碼隱藏模型,則該強類型訪問器直接添加到 .aspx 生成的類定義中,而且對于代碼隱藏類不可用。這也適用于強類型的母版頁和以前的頁訪問。  編譯

此時,您可能想知道,為什么 ASP.NET 小組非要使用這個新代碼隱藏模型來使用繼承。ASP.NET 除了將來自 .aspx 文件的方法呈現為部分類(然后這些類與簡化的代碼隱藏類合并)之外,還可以輕松生成所有控件變量聲明。這就是 Windows 窗體在 .NET Framework 2.0 中的工作方式。設計器生成的所有代碼被放置在同輩部分類(然后該類與您的應用程序邏輯合并)中,事件處理程序被放置在窗體驅動的單個類中,從而在無需借助于繼承的情況下,在計算機生成的代碼和開發人員代碼之間創建一個完全的分離。
嗯,ASP.NET 2.0 中代碼隱藏的原始實現也執行此操作 — 代碼隱藏類只是一個與分析的 .aspx 文件類定義合并的部分類。它簡單有效,但遺憾的是它不夠靈活。該模型的問題在于,預編譯的二進制程序集中的代碼隱藏文件不再能夠與完整的 .aspx 文件一起部署,因為它們現在必須同時編譯(使用部分類的一個限制是,一個類的所有部分必須在單個編譯中合并,而且類定義無法跨越程序集)。對于許多開發人員而言,該限制是無法接受的,因為他們已經習慣于將二進制代碼隱藏程序集與完整的 .aspx 文件一起

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 亚洲区小说区图片区qvod| 国产午夜手机精彩视频| 免费在线观看a视频| 99自拍视频在线观看| 国产色视频一区二区三区QQ号| 中文字幕av免费专区| 日韩免费毛片视频| 亚洲日韩国产成网在线观看| 男生和女生一起差差在线观看| 国产一区二区不卡免费观在线| 黄色福利小视频| 国产精品丝袜黑色高跟鞋| 97人洗澡从澡人人爽人人模| 小sao货求辱骂| 久久99精品一区二区三区| 最近中文字幕2018高清在线| 亚洲成年人电影在线观看| 爽爽影院在线看| 免费高清在线观看| 美国式家庭禁忌| 国产三级在线观看视频| 香蕉狠狠再啪线视频| 国产污片在线观看| 4480yy苍苍私人| 在线小视频国产| 久久国内精品自在自线软件| 欧美jizzjizz在线播放| 亚洲欧美成人综合| 波霸影院一区二区| 做受视频60秒试看| 秋霞免费乱理伦片在线观看 | 无码av专区丝袜专区| 久久夜色精品国产亚洲AV动态图| 朝桐光亚洲专区在线中文字幕| 亚洲国产精品xo在线观看| 欧美色aⅴ欧美综合色| 国产三级无码内射在线看| 高清国产激情视频在线观看| 国产欧美日韩精品一区二区三区| 福利视频导航网| 国产精品国产亚洲精品看不卡|