《一》認識ASP.NET程序員
1.ASP.NET程序結構web
(1)前臺和後臺正則表達式
Default.aspx是進行界面設計的文件,一般稱爲前臺。用戶能看到。windows
Default.aspx.cs是後臺代碼,由程序員完成後臺代碼的設計,。用戶看不到。數組
Default.aspx源碼界面頂部有一句聲明:瀏覽器
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
CodeFile參數設置的內容就是本界面所關聯的後臺代碼。安全
2.事件:兩個參數:sender和e。告訴程序,誰(sender)作了什麼(e)。服務器
protected void Button1_Click(object sender, EventArgs e) { this.Label1.Text = "你已經單擊了OK按鈕,歡迎進入ASP.NET 3.5開發世界"; }
理解windows系統是消息驅動的,循環消息機制。
3.程序處理過程和本質(這是重點★★★★★)框架
一個網頁的完整處理過程,本質是一個事件處理的順序。整個事件的完整處理過程,就是一個頁面的生命週期。網頁的生命週期主要分10步,也就是10個須要處理的事件。函數
(1)初始化對象
(2)導入ViewState數據
(3)用LoadPostData處理Postback數據
(4)導入對象
(5)RaisePostBackChanged事件
(6)處理客戶端PostBack事件
(7)預先呈遞對象
(8)保存ViewState
(9)呈遞給頁面
(10)銷燬對象:服務器吧頁面呈現給瀏覽器後,全部的對象都應該被銷燬。銷燬全部在創建這個頁面時建立的對象。銷燬任何對象都不會產生錯誤,包括頁面對象。
4.配置文件:web.config。用於配置網站。
5.名詞解釋
(1).NET Framework:框架。支持生成和運行下一代應用程序和XML Web Services的內部windows組件。
(2)公共語言運行庫: (common language runtime,CLR) 託管代碼執行核心中的引擎。運行庫爲託管代碼提供各類服務,如跨語言集成、代碼訪問安全性、對象生存期管理、調試和分析支持。
(3)託管代碼:以運行庫爲目標的代碼稱爲託管代碼。
(4)非託管代碼:不以運行庫爲目標的代碼稱爲非託管代碼。
(5)LINQ:一種集成查詢語言,可支持對數據、對象等進行查詢。
(6)WCF:一種服務框架,相似於早期的Remoting,但更加容易調用。
(7)WPF:一種最近的Windows Forms程序形式,用來建立更加美觀的窗體界面。
(8)Ajax: 一個JS框架,用戶B/S程序,也就是網站項目,支持客戶端的快速響應。
(9)支持分頁的數據模板空間:網站項目中,添加了ListView和DataPager空間,可自定義分頁數據的讀取和顯示。
能夠ASP.NET網頁做爲Web應用程序的用戶界面和後臺邏輯部分。使用服務器端代碼來實現應用程序邏輯。服務器上運行的代碼動態地生成到瀏覽器或客戶端設備的網頁輸出。
6.裝箱與拆箱
裝箱:把值類型轉換爲引用類型
拆箱:將引用類型轉換爲值類型
double a = 45.2; //定義值 object b = a; //裝箱操做 Response.Write(a.ToString() + "-" + b.ToString());//輸出結果
double a = 45.2; //定義值 object b = a; //轉化爲引用對象後的值 double c = (double)b;//將引用對象拆箱,並返回值
7.普通數組和動態數組
int[] a = new int[2]; //普通數組 ArrayList ar = new ArrayList();//初始化動態數組 ar.Add("A"); //在動態數組中添加值 ar.Add("B");
8.泛型
相似C++中的模板
9.註釋
C# 中的註釋有多種狀況,常見的分爲三種:
(1)單行代碼後的註釋.使用//來註釋。
(2)方法前的註釋.用來歸納說明方法的功能和方法中的參數意義,用///表示。
(3)對整個程序的說明. 通常用在程序的開始處,說明這個文件的來源或者版權。用/*xxxxx*/結束。
/// <summary> ///Class1 的摘要說明 /// </summary> public class Class1 { public Class1() { // //TODO: 在此處添加構造函數邏輯 // } }
10.對象、類、接口和繼承
(1)C#只容許繼承一個父類,但容許繼承多個接口。
(2)局部類:用關鍵字partial修飾。
public partial class _Default : System.Web.UI.Page
11.隱式類型:var
12.類中屬性賦值自動實現
public string name //姓名屬性 { get; set; }
13.Lambda表達式
相似C++的指針。在LINQ查詢中應用很是普遍。
《二》網頁控件
1.控件分類:Web控件和HTML控件
(1)HTML控件:只顯示內容,不與服務器交互。
(2)Web控件:即服務器控件,每次操做時都與服務器交互。每次交互都會頁面刷新。考慮效率問題。(在vs2008工具箱中顯示的是「標準」分類)
2.使用控件
<asp:TextBox ID="txtName" runat="server" ></asp:TextBox>
asp:TextBox 說明這是一個標準的Web控件
ID=」txtName」 此控件的惟一標識,可在後臺代碼中經過此ID訪問該控件
runat=」server「 表示次控件是運行在服務器端的
(2)使用控件的屬性
方法1:在可視化設計窗口,使用屬性窗口
方法2:在源碼窗口,在源碼的任何一個屬性後面,按Space鍵(空格鍵),自動彈出當前控件的全部屬性供選擇
(3)控件事件處理
方法1:單擊控件屬性上的閃電圖標,選擇對應的事件處理
方法2:按鈕事件可直接雙擊按鈕控件
protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "歡迎你," + txtName.Text; }
3.表示類控件
Label:不進行操做,只顯示數據。不容許用戶單擊或者選中。
4.輸入類控件
(1)TextBox 不容許用戶選擇,只容許用戶輸入
(2)
RadioButton 單選按鈕 ,要設置GroupName屬性,代表是同一組
CheckBox 多選按鈕
/// <summary> /// 單選按鈕響應事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button2_Click(object sender, EventArgs e) { if (RadioButton1.Checked) { Label2.Text = "你選擇的是一年級"; } if (RadioButton2.Checked) { Label2.Text = "你選擇的是二年級"; } } /// <summary> /// 多選按鈕響應事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button3_Click(object sender, EventArgs e) { if (CheckBox1.Checked && CheckBox2.Checked) { Label2.Text = "你選擇了體育和音樂"; } else if (CheckBox1.Checked) { Label2.Text = "你選擇了體育"; } else if (CheckBox2.Checked) { Label2.Text = "你選擇了音樂"; } else { Label2.Text = "兩項都沒有選擇"; } }
(2)DropDownList
DropDownList和ListBox功能同樣,以列表形式顯示多個選項。DropDownList帶有下拉框,ListBox就是列表形式。
/// <summary> /// DropDownList選擇結果的按鈕響應 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button4_Click(object sender, EventArgs e) { Label3.Text = "你選擇的是:"+DropDownList1.SelectedValue; } /// <summary> /// ListView選擇結果的按鈕響應 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button5_Click(object sender, EventArgs e) { Label4.Text = "你選擇的是:" + ListBox1.SelectedValue; }
5.佈局類控件
通常主要參與界面的設計,不控制實際的代碼,也不容許用戶操做。
(1)Panel 面板控件
(2)Table 表格控件
<asp:Panel ID="Panel1" runat="server" Height="90px" Width="476px"> //這裏是在Panel中添加的控件 </asp:Panel> <asp:Table ID="Table1" runat="server" GridLines="Both" Height="113px" Width="401px"> <asp:TableRow runat="server"> <asp:TableCell runat="server">第1格子</asp:TableCell> <asp:TableCell runat="server">第2格子</asp:TableCell> </asp:TableRow> <asp:TableRow runat="server"> <asp:TableCell runat="server">第3格子</asp:TableCell> <asp:TableCell runat="server">第4格子</asp:TableCell> </asp:TableRow> </asp:Table>
6.提交類控件
用戶輸入完數據,或做出選擇後,交給服務器處理後面的事情。一般經過按鈕完成。
Web控件提供了3個按鈕:Button、LinkButton、ImageButton。三種按鈕用法基本一致。
3.驗證控件
用來驗證用戶在頁面上的輸入,防止用戶亂輸入數據。
檢查用戶的輸入,並實時給出錯誤的提示,以提示用戶修改。
主要有6個驗證控件:
RequiredFieldValidator:必須字段驗證。用於檢查是否有輸入值
CompareValidator:比較驗證。按控件的設置比較兩個輸入值
RangeValidator:範圍驗證。驗證輸入是否在指定範圍內
RegularExpressionValidator:正則表達式驗證。使用正則表達式驗證控件的輸入
CustomValidator:自定義驗證。容許程序員以自定義方式來驗證控件
ValidationSummary:彙總錯誤提示信息
3.1.RequiredFieldValidator:必須有輸入
須要設置兩個屬性:ControlToValidate="TextBox_rfv" //關聯須要驗證的控件
ErrorMessage="必須輸入內容" //錯誤提示
<div> <asp:TextBox ID="TextBox_rfv" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox_rfv" ErrorMessage="必須輸入內容"></asp:RequiredFieldValidator> </div> <asp:Button ID="Button_rfv" runat="server" Text="Button" />
3.2.CompareValidator:比較控件。經常使用就是驗證兩個密碼是否相同
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox_new" ControlToValidate="TextBox_renew" ErrorMessage="新舊密碼不一致!"></asp:CompareValidator>
3.3.RangeValidator:範圍驗證控件
主要是設置4個屬性值:
ControlToValidate關聯須要驗證的控件
ErrorMessage設置錯誤提示信息
MaximumValue最大值
MinimumValue最小值
<asp:TextBox ID="TextBox_rv" runat="server"></asp:TextBox> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox_rv" ErrorMessage="範圍錯誤,在0-100之間" MaximumValue="100" MinimumValue="0"></asp:RangeValidator>
3.4.RegularExpressionValidator 正則表達式驗證
經過正則表達式驗證輸入的數據是否符合指定格式。正則表達式寫在ValidationExpression屬性中。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox_rev" ErrorMessage="郵箱輸入錯誤" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
部分正則表達式驗證:
功能 | 驗證碼 |
匹配Email | \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+ ([-.]\w+)* |
匹配URL | http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? |
匹配負數 | |
匹配整數 | |
匹配26個英文字母 |
3.5.CustomValidator 自定義驗證控件
主要是實現一個自定義驗證方法:ServerValidate事件,參數args.Value是須要驗證的值
/// <summary> /// 自定義驗證控件的驗證方法 /// </summary> /// <param name="source"></param> /// <param name="args"></param> protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { try { if (args.Value.Length == 8) //判斷用戶輸入的長度是不是8位 { args.IsValid = true; //驗證經過 } else { args.IsValid = false; //驗證失敗 } } catch (System.Exception ex) { args.IsValid = false;//發生異常時,驗證失敗 } }
3.6.ValidationSummary驗證控件的錯誤彙總
用來顯示頁面上全部驗證控件的錯誤信息。錯誤信息來自每一個驗證控件的ErrorMessage屬性
有2個主要屬性:
DisplayMode:指定顯示模式,能夠是列表、項目符號列表或單個段落
ShowSummary:控制是顯示仍是隱藏控件
4. Calendar日曆控件 可視日曆控件
經過SelectedDate屬性改變其餘屬性等。
5.AdRotator 動態廣告控件
AdRotator 控件用於顯示圖像序列。
該控件使用 XML 文件來存儲 ad 信息。XML 文件使用 <Advertisements> 開始和結束。在 <Advertisements> 標籤內部,應該有若干個定義每條 ad 的 <Ad> 標籤。每次加載這個頁面時,會按照必定的機率加載其中一條<Ad>標籤內的廣告內容。
屬性 | 描述 | .NET |
---|---|---|
AdvertisementFile | 包含 ad 信息的 XML 文件的路徑。 | 1.0 |
AlternateTextField | 代替廣告的 Alt 文本而使用的數據字段。 | 2.0 |
ImageUrlField | 代替廣告的 ImageURL 屬性而使用的數據字段。 | 2.0 |
KeywordFilter | 根據類別對廣告進行過濾。 | 1.0 |
NavigateUrlField | 代替廣告的 NavigateUrl 屬性而使用的數據字段。 | 2.0 |
runat | 規定該控件是服務器控件。必須設置爲 "server"。 | 1.0 |
Target | 在何處打開 URL。 | 1.0 |
<Ad> 標籤中預約義的元素被列在下面:
屬性 | 描述 |
---|---|
<ImageUrl> | 可選。圖像文件的路徑。 |
<NavigateUrl> | 可選。用戶點擊該 ad 時所連接的 URL。 |
<AlternateText> | 可選。圖像的可選文本。 |
<Keyword> | 可選。ad 的類別。 |
<Impressions> | 可選。顯示機率。 |
xml文件示例:
<?xml version="1.0" encoding="utf-8" ?> <Advertisements> <!--這是第1條Ad廣告的內容--> <Ad> <ImageUrl>baidu.gif</ImageUrl> <NavigateUrl>http://www.baidu.com</NavigateUrl> <AlternateText>百度</AlternateText> <Impressions>80</Impressions> <Keyword>img1</Keyword> </Ad> <!--這是第2條Ad廣告的內容--> <Ad> <ImageUrl>google.gif</ImageUrl> <NavigateUrl>http://www.google.com</NavigateUrl> <AlternateText>谷歌</AlternateText> <Impressions>80</Impressions> <Keyword>img2</Keyword> </Ad> </Advertisements>
PS:第一部分暫時更新到這裏...