【正文】
in the execution of the page and produce their own markup rendering to the client. The principle advantage of server controls is that they enable developers to get plex rendering and behaviors from simple buildingblock ponents, dramatically reducing the amount of code it takes to produce a dynamic Web page. Another advantage of server controls is that it is easy to customize their rendering or behavior. Server controls expose properties that can be set either declaratively (on the tag) or programmatically (in code). Server controls (and the page itself) also expose events that developers can handle to perform specific actions during the page execution or in response to a clientside action that posts the page back to the server (a postback). Server controls also simplify the problem of retaining state across roundtrips to the server, automatically retaining their values across successive postbacks. Server controls are declared within an .htm file using custom tags or intrinsic HTML tags that contain a runat=server attribute value. Intrinsic HTML tags are handled by one of the controls in the namespace. Any tag that doesn39。尤其是,它提供了創(chuàng)建和使用可封裝常用功能的可重用用戶界面控件的能力,從而減少了頁(yè)開(kāi)發(fā)人員編寫(xiě)代碼的數(shù)量,它還為開(kāi)發(fā)人員提供了清晰、有序地構(gòu)造頁(yè)面的能力,以及可使開(kāi)發(fā)工具真正做到所見(jiàn)即所得的功能。它們放在 IIS服務(wù)器上的虛擬目錄中。例如,下面的示例演示了一個(gè)簡(jiǎn)單 HTML 頁(yè),它收集用戶名和類別首選項(xiàng),然后在單擊某一按鈕時(shí)執(zhí)行窗體回發(fā),發(fā)送 至發(fā)起請(qǐng)求的頁(yè)。 提供了與現(xiàn)有 ASP 頁(yè)的語(yǔ)法兼容性。這可以提高運(yùn)行時(shí)執(zhí)行性能。正如上述示例所闡述的那樣,只使用 % % 代碼塊的開(kāi)發(fā)人員必須自定義管理往返過(guò)程之間的頁(yè)狀態(tài)并自定義解釋發(fā)送的值。服務(wù)器控件的另一個(gè)優(yōu)點(diǎn)在于可以很容易地自定義其呈現(xiàn)或行為。 服務(wù)器控件在 .aspx 文件中是使用自定義標(biāo)記或包含 runat=server 屬性值的內(nèi)部 HTML 標(biāo)記聲明的。在運(yùn)行時(shí),這些服務(wù)器控件將自動(dòng)生成 HTML 內(nèi)容。 除支持標(biāo)準(zhǔn) HTML 輸入控件之外, 還使開(kāi)發(fā)人員能夠在他們的頁(yè)上利用更豐富的自定義控件。 開(kāi)發(fā)人員可以使用此對(duì)象模型清晰地修改頁(yè)以及與頁(yè)進(jìn)行交互。最初,這些控件只呈現(xiàn)其 HTML 窗體等效項(xiàng)。 調(diào)用此類型的頁(yè)編程 “代碼內(nèi)聯(lián) ”,如果您要在一個(gè)文件中維護(hù)您的代碼和表示邏輯,則該方法十分有用 。在團(tuán)隊(duì)項(xiàng)目中,設(shè)計(jì)人員通常負(fù)責(zé)應(yīng)用程序的用戶界面部分的工作,而開(kāi)發(fā)人員則負(fù)責(zé)行為或代碼部分。通過(guò)在 Inherits 屬性中指定類名,頁(yè)代碼使用 % Page % 指令的 CodeFile 屬性來(lái)引用代碼隱藏文件。這極大地簡(jiǎn)化了代碼隱藏頁(yè)的維護(hù)工作。 與頁(yè)可在運(yùn)行時(shí)動(dòng)態(tài)編譯一樣,任意代碼文件(例如, .cs 或 .vb 文件)也可以在運(yùn)行時(shí)動(dòng)態(tài)編譯。下面的示例演示如何使用 App_Code 目錄包含一個(gè)從頁(yè)調(diào)用的類文件。 configuration pilation codeSubDirectories add directoryName=Subdirectory/ /codeSubDirectories /pilation / /configuration 在 版本 中支持 Bin 目錄 , 該目錄類似于 Code 目錄 , 不同的是它可以包含預(yù)編譯的程序集。您可能需要使用頁(yè)最上方的 Import 指令從 Bin 目錄的程序集中導(dǎo)入特定的命名空間 。通過(guò)在應(yīng)用程序的 文件中注冊(cè),并且可以注冊(cè)更多的程序集。這些程序集存儲(chǔ)在全局程序集緩存中,該緩存是程序集的版本化存儲(chǔ)庫(kù),可供計(jì)算機(jī)上的所有應(yīng)用程序使用。主要在你的程序中將該 DLL作為引用添加到你的工程。但可以將 App_Code 目錄劃分為若干子目錄(每個(gè)子目錄包含同一語(yǔ)言的文件)以便可以在 App_Code 目錄下包含多種語(yǔ)言。與 不同( 需要將這些文件預(yù)編譯到 Bin 目錄), App_Code 目錄中的所有代碼文件都將在運(yùn)行時(shí)動(dòng)態(tài)編譯,然后提供給應(yīng)用程序。將這些代碼復(fù)制到需要它們的每個(gè)頁(yè)上,這種做法既低效又使代碼難以維護(hù)。 與以前版本相比,這種簡(jiǎn)化的代碼隱藏模型的好處在于無(wú)需維護(hù)代碼隱藏類中服務(wù)器控件變量的各個(gè)不同的聲明。 為代碼隱藏頁(yè)引入了一個(gè)改進(jìn)的運(yùn)行庫(kù),該庫(kù)可簡(jiǎn)化頁(yè)和代碼之間的連接。在使用代碼隱藏時(shí),處理事件的代碼所在的文件與包含服務(wù)器控件和標(biāo)記的頁(yè)在物理上分開(kāi)。然后,該頁(yè)將重新呈現(xiàn)以反映更新后的文本。 提供了可以組織頁(yè)中代碼的兩種方法。 重要事項(xiàng):所有內(nèi)置服務(wù)器控件的詳細(xì)列表可在本快速入門(mén)的 “控件參考 ” 部分中找到。此控件狀態(tài)不存儲(chǔ)在服務(wù)器上(而是存儲(chǔ)在往返于請(qǐng)求之間的 input type=hidden 窗體字段中)。未顯式映射到這些控件之一的任何標(biāo)記都將被指定為 類型。服務(wù)器控件(和頁(yè)本身)還公開(kāi)了一些事件,開(kāi)發(fā)人員可以處理這些事件以在頁(yè)執(zhí)行期間執(zhí)行特定的操作或響應(yīng)將頁(yè)發(fā)回服務(wù)器的客戶端操作( “回發(fā) ”)。服務(wù)器控件參與頁(yè)的執(zhí)行,并生成它們自己的標(biāo)記呈現(xiàn)給客戶端。例如,下面的示例演示如何使用 % % 代碼塊解釋從客戶端發(fā)回的請(qǐng)求。在呈現(xiàn)頁(yè)時(shí),這些代碼塊以從上至下的方式執(zhí)行。這是因?yàn)? .aspx 文件只包含靜態(tài) HTML(不包含動(dòng)態(tài)內(nèi)容)。然后,可以使用此類動(dòng)態(tài)處理傳入的請(qǐng)求。 頁(yè)是采用 .aspx 文件擴(kuò)展名的文 本文件。t have access to the source code (VB or C file) but you have a piled DLL instead. Simply place the assembly in the Bin directory