【正文】
for working with the World Wide Web, including classes for representing browser requests and server responses. — Contains classes used for caching the content of pages and classes for performing custom caching operations. — Contains classes for implementing authentication and authorization such as Forms and Passport authentication. — Contains classes for implementing session state. — Contains the basic classes used in building the user interface of pages. — Contains the classes for the HTML controls. — Contains the classes for the Web controls. .NET FrameworkCompatible Languages For purposes of this book, you will write the application logic for your pages using Visual Basic as your programming language. It is the default language for pages. Although you stick to Visual Basic in this book, you also need to understand that you can create pages by using any language that supports 12 the .NET Common Language Runtime. Out of the box, this includes C, , and the Managed Extensions to C++. NOTE The CD included with this book contains C versions of all the code samples. Dozens of other languages created by panies other than Microsoft have been developed to work with the .NET framework. Some examples of these other languages include Python, SmallTalk, Eiffel, and COBOL. This means that you could, if you really wanted to, write pages using COBOL. Regardless of the language that you use to develop your pages, you need to understand that pages are piled before they are executed. This means that pages can execute very quickly. The first time you request an page, the page is piled into a .NET class, and the resulting class file is saved beneath a special directory on your server named Temporary Files. For each and every page, a corresponding class file appears in the Temporary Files directory. Whenever you request the same page in the future, the corresponding class file is executed. When an page is piled, it is not piled directly into machine code. Instead, it is piled into an intermediatelevel language called Microsoft Intermediate Language (MSIL). All .NETpatible languages are piled into this intermediate language. An page isn39。 麥克唐納 、 茲普茲塔 著 高級(jí)程序設(shè)計(jì) (第 2 版 ) 9 Technique 1. Building Pages and the .NET Framework is part of Microsoft39。 使用豐富頁(yè)面的控件 在下列的部分中,你學(xué)會(huì)在 Framework怎樣使用三種特征控件。 使瀏覽狀態(tài)失效 在特定的環(huán)境中,你可能想要對(duì)一個(gè) 單獨(dú)的控件或 8 瀏覽狀態(tài)失效。 Web控件 (不是每個(gè) HTML 控件 ) 還有一個(gè)叫 Enabled的屬性 。 使用 Visible and Enabled屬性 每個(gè)控件 ,包括 HTML 和 Web控件 ,有一個(gè) Visible 屬性來(lái)決定那個(gè)控件是否可見(jiàn)。 在下列的部分中,你學(xué)會(huì)用屬性設(shè)置在一個(gè)窗體中來(lái)隱藏或顯示控件。 你可能想要隱藏或者顯示完成依靠用戶(hù)參考的問(wèn)題的詳細(xì)說(shuō)明。 舉例來(lái)說(shuō),假想你正在創(chuàng)造一種在線納稅系統(tǒng),而且你想要顯示或者隱藏一個(gè)包含適用于已婚的稅文件編檔員的問(wèn)題的部分。 你能夠自動(dòng)地保存頁(yè)面里的數(shù)據(jù)狀態(tài)。 瀏覽狀態(tài)在一個(gè)名叫做 VIEWSTATE的隱藏頁(yè)面中執(zhí)行,這個(gè)隱藏頁(yè)面自動(dòng)創(chuàng)建 每個(gè) Web窗體。 瀏覽狀態(tài)的妙處是它不依賴(lài)任何的特定服務(wù)器或?yàn)g覽器的屬性。 7 4. 先進(jìn)的控件編程 保存瀏覽狀態(tài) 默認(rèn)地,幾乎所有的 控件都會(huì)在先前的窗體中保留他們的屬性值。 幸好,微軟除了包含上面提到的控件還包括 ValidationSummary 控件。 總結(jié)錯(cuò)誤 : ValidationSummary 控件 假想一個(gè)頁(yè)面有 50個(gè)字段假如 你僅僅用上部分討論的那些驗(yàn)證控件來(lái)顯示錯(cuò)誤看見(jiàn)一個(gè)錯(cuò)誤在頁(yè)面中將是很難的。 比較值 : CompareValidator 控件 這個(gè) CompareValidator 控件用于比較一個(gè)輸入的數(shù)據(jù)和另外一個(gè)值是否相同。 例如:你能使用這控件來(lái)檢查一個(gè)用戶(hù)是否輸入一個(gè)合法的電子郵件地址,電話號(hào)碼,用戶(hù)名或密碼。 然而,這個(gè)控件也可以用在其他的輸入型控件,例如: 。 尤其,正如這一章討論的客戶(hù)端腳本不可能在任意本本的瀏覽器中運(yùn)行。 如果一個(gè)瀏覽器不支持 JavaScript,那個(gè)驗(yàn)證規(guī)則會(huì)自動(dòng)在服務(wù)器端代碼中執(zhí)行。 這些驗(yàn)證控件會(huì)自動(dòng)地產(chǎn)生客戶(hù)端代碼和服務(wù)器端代碼。就這樣的做法更有安全的保障。 由于這個(gè)原因,許多開(kāi)發(fā)者在過(guò)去決定添加自定義驗(yàn)證到服務(wù)器端。 然而,問(wèn)題是它不與所有的瀏覽器兼容。 人們喜歡客戶(hù)端的驗(yàn)證。 寫(xiě)驗(yàn)證代碼到客戶(hù)端代碼中的優(yōu)勢(shì)能夠及時(shí)反饋到你的用戶(hù)。 3. 用驗(yàn)證控件做頁(yè)面驗(yàn)證 使用客戶(hù)端驗(yàn)證 傳統(tǒng)地,當(dāng)增加驗(yàn)證到他們的頁(yè)面中時(shí),他們會(huì)面臨一個(gè)嚴(yán)峻的選擇。 首先,你瀏覽一下針對(duì)所有 Web控件格式屬性他們是基本控件類(lèi)的格式屬性。 最后,你學(xué)會(huì)用超級(jí)鏈接控件怎么把頁(yè)面連在一起。首先,你學(xué)會(huì)怎么把一個(gè) HTML窗體鏈接到另一個(gè)頁(yè)面來(lái)獲取信息。 下面的部分為這些 Web控件提供了詳細(xì)的提綱和程序源代碼。 每當(dāng)初始化事件發(fā)生的時(shí)候,你能夠添加代碼到頁(yè)面中來(lái)執(zhí)行。 當(dāng)它被請(qǐng)求的時(shí)候一個(gè) 頁(yè)面每次 5 都能夠響應(yīng)幾個(gè)事件。 舉例來(lái)說(shuō),當(dāng)某人單擊 Button按鈕控件的時(shí)候,你可以保存窗體數(shù)據(jù)到一個(gè)文件或者數(shù)據(jù) 庫(kù)。 如果一個(gè)使用者單擊 HTML窗體中的 Button按鈕, 舉例來(lái)說(shuō),那個(gè)按鈕就會(huì)響應(yīng)一個(gè)事件 (單擊事件 ) 。 了解 控件是怎么工作的?最好的方法是看一個(gè)簡(jiǎn)單的 Web應(yīng)用窗體頁(yè)面。 控件和 HTML 內(nèi)容共存。這些控件能夠使你的網(wǎng)站的使用者看見(jiàn)和交互。 舉例來(lái)說(shuō),你能使用 IL Disassembler 瀏覽 TextBox 控 件 的 中 間 代 碼 。 它列出了類(lèi)的所有方法和屬性使你能夠?yàn)g覽中間代碼。 提示 在 .NET framework中, 微軟包括一個(gè)名叫 IL Disassembler的有趣的工具。 假如你過(guò)去只用 VBScript而不用 Visual Basic,也不用擔(dān)心。 此外,不像 VBScript , Visual Basic 是一種被編譯的語(yǔ)言。 Visual Basic 是一個(gè) VBScript 的超集 ,意味著 Visual Basic 相對(duì)于 VBScript有更多的功能。 典型 ASP提示 4 VBScript 怎么樣呢 ? 在 之前, VBScript 是開(kāi)發(fā)動(dòng)態(tài)頁(yè)面最流行的語(yǔ)言。 這些迷惑的方面體現(xiàn)在整 個(gè)過(guò)程都在后臺(tái)運(yùn)行,你必須要做的是用資源代碼為你的 。 當(dāng) 頁(yè)面被編譯的時(shí)候,它沒(méi)被直接地被編譯成機(jī)器碼而是被編譯成了一個(gè)中間語(yǔ)言,名字叫 (MSIL)所有 .NET可用的語(yǔ)言都被編譯成這種中間語(yǔ)言。對(duì)于一個(gè) 頁(yè)面一個(gè)通信類(lèi)文件出現(xiàn)在 Temporary Files目錄下。 不管你使用什么語(yǔ)言開(kāi)發(fā) 頁(yè)面,你需要明白 譯,這就意味著 。 這些其他的語(yǔ)言的一些例子包括 Python、 SmallTalk 、 Eiffel和 COBOL。 提示 本書(shū)所含的光碟包含 C 源代碼。雖然你在這一本書(shū)中一直用 Visual Basic, 但是,你也需要了解用其它的支持公共語(yǔ)言庫(kù)的語(yǔ)言創(chuàng)建。 .NET Framework 可用的語(yǔ)言 這一本書(shū)的目的 , 你將會(huì)為以 Visual Basic 作為你的編程語(yǔ)言來(lái)完成你的 頁(yè)寫(xiě)程序編寫(xiě)。 包含 HTML 控件的類(lèi)。 包含執(zhí)行保存狀態(tài)的類(lèi)。 3 命 名空間 包含頁(yè)面緩沖內(nèi)容和自定義緩沖操作的類(lèi)。 包含的是匹配正則表達(dá)式和替代操作類(lèi)。 命名空間 包括 files類(lèi)。 包含的類(lèi)是標(biāo)準(zhǔn)的集合類(lèi),例如:哈希表,數(shù)組列表。 標(biāo)準(zhǔn)的 命名空間 在默認(rèn)情況下,在你的 ,類(lèi)被包含在一個(gè)選定的命名空間中這些默認(rèn)的命名空間使你在 。 提示 你能夠?yàn)g覽 .NET Frame