一、開始
1、介紹
歡迎光臨ASP.NET立即上手教程。
ASP.NET立即上手教程是由一系列執行個體和支援解說構成的,他的目的是為了讓開發人員快速理解ASP.NET的文法、架構以及ASP.NET網路應用程式架構的強大功能。所有的執行個體設計的短小而容易理解,可以充分展示ASP.NET的相應功能。在學習完本教程以後,你應該熟悉以下內容:
·ASP.NET文法。當然,對於熟練的ASP開發人員,有些ASP.NET文法元素會很熟悉,而有些卻是新架構所專屬的。本教程的執行個體覆蓋了所有文法元素的細節。
·ASP.NET結構和特性。本教程介紹ASP.NET的特性,這些特性可以讓開發人員以前所未有的效率建立互動、世界級水平的應用程式。
·最佳實務。本教程的執行個體示範了ASP.NET功能的最佳途徑,同時也避免了潛在的缺陷。
本教材的讀者對象水平要求:
如果你以前從來沒有過開發web頁的經驗,那麼本教材不適合你。你應該熟悉html和一般的web開發術語。你不需要有過asp的經驗,但是你應該熟悉互動式頁面的概念,包括表單,指令碼和資料訪問。
消化吸收本教材的執行個體
本教材是所展示內容的最佳實務。每個執行個體建立在概念的辨析和前面執行個體的引申之上。該執行個體是一個從簡單到複雜,從單一技術到應用的完整的系列
2、什麼是ASP.NET
Asp.net是建立在通用語言運行時刻庫(CLR)上的應用程式架構。他用來在伺服器端構建功能強大的web應用程式。Asp.net提供了幾個超越以前web開發模式的優點:
·增強效能。Asp.net是運行在伺服器端的編譯後的CLR代碼,而不是像ASP那樣解釋執行。Asp.net利用提前綁定,即時編譯,本地最佳化和快取服務來提高效能。所有這一切,效能遠遠大於你以往寫的每一行代碼。
·世界級水平的開發工具支援。在Visual Studio .net的整合式開發環境(IDE)中,Asp.net架構由豐富的工具箱和設計器組成。所見即所得 (WYSIWYG)的(WYSIWYG)編輯方式、拖放伺服器控制項、以及自動部署,僅僅是這一強大工具所提供的一少部分功能。
·強大而富有彈性。由於asp.net是基於(CLR)的,因此整個.net平台的強大和富有彈性,同樣可以應用於web應用程式開發人員。.net架構的類庫、訊息以及資料訪問解決方案,都可以無縫整合到web。Asp.net也是語言中立的,因此你可以選擇你最熟悉的語言,或者通過幾種語言來共同完成一個應用。而且,CLR的互用性可以保證你升級到asp.ent的時候,現存的基於COM的開發投資依然保留。
·簡單。Asp.net使執行常用的工作變得很容易,比如從簡單的表單提交、用戶端驗證,到部署和網站配置。例如,asp.net允許你建立使用者介面,實現頁面和邏輯代碼的分離,同時,就像vb的表單執行模式那樣來處理事件(也就是說,由頁面驅動模式變成了事件驅動模式)。此外,CLR簡化了部署,用來管理代碼服務,例如自動參照和記憶體回收。
·易於管理。Asp.net使用一個基於文本的、分層次的配置系統,它簡化了伺服器端環境和web應用程式的設定。由於配置資訊用純文字格式儲存,新的設定不需要本地管理工具的支援。這種“零本地支援”的理念也同樣應用到了部署asp.net應用程式。Asp.net應用程式部署到伺服器,簡化為複製必要的檔案到伺服器。在部署,甚至替換正在啟動並執行變異代碼的時候,也不需要重新啟動伺服器。
·延展性和有效利用性。Asp.net被設計成可伸縮的,能為叢集和多處理器環境設計提高效能。而且,asp.net運行時刻密切監視和管理進程,這樣,如果發生了錯誤的行為,例如漏洞和死結,新的進程會在當前位置建立,來協助你的應用程式繼續處理事件請求。
·可訂製和擴充。Asp.net提供一種良好的擴充結構,允許開發人員在適當的層級“插入”他們的代碼。事實上,使用自己的編寫的組件可以擴充或者替換asp.net運行時刻的任何子組件。執行自訂驗證或狀態服務變得前所未有的容易。
·安全性。內建的windows驗證和每一個應用程式的獨立配置,你可以認為你的應用程式是安全的。
接下來的asp.net教程勢力將向您展示這些概念的練習
3、語言支援(C#版本)
語言支援
微軟的.net平台現在提供內建的三種語言支援:C#, Visual Basic, 和 Jscript。本教材的練習和執行個體代碼展示如何使用這三種語言建立.net應用程式。關於其他語言的更多得文法資訊,請參考.NET Framework SDK文檔。
下面提供的的程式碼片段協助你理解本教材中代碼執行個體,以及這三種語言之間的差異。
變數聲明
以下為引用的內容: int x; String s; String s1, s2; Object o; Object obj = new Object(); public String name; |
語句
Response.Write("foo");
注釋
// 這是單行注釋
/*這是多行注釋*/
訪問索引屬性
以下為引用的內容: String s = Request.QueryString["Name"]; String value = Request.Cookies["key"]; |
聲明索引屬性
以下為引用的內容: // Default Indexed Property public String this[String name] { get { return (String) lookuptable[name]; } } |
聲明簡單屬性
以下為引用的內容:
public String name { get { ... return ...; } set { ... = value; } } |
聲明和使用枚舉
以下為引用的內容:
// Declare the Enumeration public enum MessageSize { Small = 0, Medium = 1, Large = 2 } // Create a Field or Property public MessageSize msgsize; // Assign to the property using the Enumeration values msgsize = Small; |
遍曆集合
以下為引用的內容: foreach ( String s in coll ) { ... } |
聲明和使用方法
以下為引用的內容:
// Declare a void return function void voidfunction() { ... } // Declare a function that returns a value String stringfunction() { ... return (String) val; } // Declare a function that takes and returns values String parmfunction(String a, String b) { ... return (String) (a + b); } // Use the Functions voidfunction(); String s1 = stringfunction(); String s2 = parmfunction("Hello", "World!"); |
定製屬性
以下為引用的內容:
// Stand-alone attribute [STAThread] // Attribute with parameters [DllImport("ADVAPI32.DLL")] // Attribute with named parameters [DllImport("KERNEL32.DLL", CharSet=CharSet.Auto)] |
數組
以下為引用的內容:
String[] a = new String[3]; a[0] = "1"; a[1] = "2"; a[2] = "3"; String[][] a = new String[3][3]; a[0][0] = "1"; a[1][0] = "2"; a[2][0] = "3"; |
初始化
以下為引用的內容: String s = "Hello World"; int i = 1; double[] a = { 3.00, 4.00, 5.00 }; If 語句 if (Request.QueryString != null) { ... } |
Case 語句
以下為引用的內容:
switch (FirstName) { case "John" : ... break; case "Paul" : ... break; case "Ringo" : ... break; default: ... break; } For 迴圈 for (int i=0; i<3; i++) a(i) = "test"; While 迴圈 int i = 0; while (i<3) { Console.WriteLine(i.ToString()); i += 1; } |
異常處理
以下為引用的內容: try { // Code that throws exceptions } catch(OverflowException e) { // Catch a specific exception } catch(Exception e) { // Catch the generic exceptions } finally { // Execute some cleanup code } |
字串串連
以下為引用的內容:
// Using Strings String s1; String s2 = "hello"; s2 += " world"; s1 = s2 + " !!!"; // Using StringBuilder class for performance StringBuilder s3 = new StringBuilder(); s3.Append("hello"); s3.Append(" world"); s3.Append(" !!!"); |
事件處理委派
以下為引用的內容: void MyButton_Click(Object sender, EventArgs E) { ... } |
聲明事件
以下為引用的內容:
// Create a public event public event EventHandler MyEvent; // Create a method for firing the event protected void OnMyEvent(EventArgs e) { MyEvent(this, e); } |
向事件增加或移除事件處理
以下為引用的內容: Control.Change += new EventHandler(this.ChangeEventHandler); Control.Change -= new EventHandler(this.ChangeEventHandler); |
構造
以下為引用的內容: MyObject obj = (MyObject)Session["Some Value"]; IMyObject iObj = obj; |
轉換
以下為引用的內容: int i = 3; String s = i.ToString(); double d = Double.Parse(s); |
帶有繼承的類定義
以下為引用的內容:
using System; namespace MySpace { public class Foo : Bar { int x; public Foo() { x = 4; } public void Add(int x) { this.x += x; } override public int GetNum() { return x; } } } // csc /out:librarycs.dll /t:library // library.cs |
實現介面
以下為引用的內容:
public class MyClass : IEnumerable { ... IEnumerator IEnumerable.GetEnumerator() { ... } } |
帶有Main方法的類定義
以下為引用的內容:
using System; public class ConsoleCS { public ConsoleCS() { Console.WriteLine("Object Created"); } public static void Main (String[] args) { Console.WriteLine("Hello World"); ConsoleCS ccs = new ConsoleCS(); } } // csc /out:consolecs.exe /t:exe console.cs |
標準模板
以下為引用的內容:
using System; public class Module { public static void Main (String[] args) { Console.WriteLine("Hello World"); } } // csc /out:consolecs.exe /t:exe console.cs |