ASP-NET教學設計教案-教程_第1頁
ASP-NET教學設計教案-教程_第2頁
ASP-NET教學設計教案-教程_第3頁
ASP-NET教學設計教案-教程_第4頁
ASP-NET教學設計教案-教程_第5頁
已閱讀5頁,還剩167頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實用文檔《ASP.NET》課程教案20162017學年第二學期任課教師張成年任課班級軟件153課程名稱ASP.NET課程類型專業必修課總學時80二O一七年二月授課題目第1章搭建ASP.NET開發環境授課類型理論課+實驗課教學方法講授、實例驅動教學手段多媒體教學授課時間學時分配3教學目的通過本次課程的學習,主要掌握visualstudio開發環境的框架知識,安裝知識和開發環境常用操作:教學重點框架知識頁面創建網站包括的基本要素教學難點框架知識其它教學基本內容備注一、新課導入我們已經學習了C#程序語言,掌握了面向對象編程的基礎,再進一步了解框架相關知識。包括一個完整網站包括的基本要素和常用的操作。

授課題目第2章服務器控件授課類型理論課+實驗課教學方法講授、實例驅動教學手段多媒體教學授課時間學時分配15教學目的通過本次課程的學習,主要掌握以下控件的應用:Page頁面Label控件TextBox控件Button控件HyperLink控件Image控件ImageButton控件LinkButton控件DropDownList控件ListBox控件CheckBox控件CheckBoxList控件RadioButton控件RadioButtonList控件Panel控件Table控件BulletedList控件ImageMap控件教學重點Label控件TextBox控件Button控件DropDownList控件ListBox控件RadioButtonList控件Panel控件Table控件ImageMap控件教學難點ListBox控件RadioButtonList控件Table控件ImageMap控件其它教學基本內容備注授課內容提要第2章服務器控件(一)Page頁面1.作用容器:承載控件2.重要屬性IsPostBack3.例子Page.IsPostBack屬性實驗:添加一個Web窗體,在頁面上放一個按鈕和一個標簽(Label)控件,將Label的Text屬性設置為0。在Page_Load事件中寫代碼:if(!Page.IsPostBack){intx=int.Parse(Label2.Text)+1;Label2.Text=x.ToString();}運行,不斷點擊按鈕。改變后對比(去掉if判斷)protectedvoidPage_Load(objectsender,EventArgse){intx=int.Parse(Label2.Text)+1;Label2.Text=x.ToString();}運行,不斷點擊按鈕。(二)Label控件1.作用顯示數據2.重要屬性BackColorBorderStyleBorderWidthTextEnableThemingSkinIDHeightWidth3.例子//Label的例子:更改Text屬性和背景顏色floatsalary=4100.2f;if(salary>2000)Label1.Text="您需要交稅";elseLabel1.Text="您不需要交稅";此處填寫更改顏色的代碼Label1.BackColor=……//Label的例子:更改Text屬性和背景顏色(三)TextBox控件1.作用數據輸入控件2.重要屬性和方法BorderColorBorderStyleBorderWidthTextEnableThemingSkinIDTextMode->SingleLine、MultiLine、PasswordReadOnly3.例子TextBox的ReadOnly屬性測試:放一個文本框(TextBox),將其ReadOnly屬性設置為true,運行看結果如何?問題:在哪里能夠修改文本框的值呢?參考答案:一是在設計時通過屬性窗口修改Text屬性,二是在事件中通過代碼修改Text屬性(四)Button控件1.作用響應用戶操作(鼠標和鍵盤事件)。2.重要屬性和事件BorderColorBorderStyleBorderWidthTextEnableThemingSkinIDCausesValidation—是否引發驗證OnClientClick-->指定單擊按鈕時執行的客戶端腳本代碼函數名UseSubmitBehavior->指示按鈕是否呈現為提交按鈕,默認為truePostBackUrl-->指定單擊此按鈕時回發到的頁面的URL,默認為本頁在目標頁面中用Page.PreviousPage.FindControl()方法獲取數據Click事件3.例子標簽、文本框、按鈕的綜合例子--模擬登錄程序知識點:TextBox的TextMode屬性If語句彈出提示對話框(可以帶上耳機)protectedvoidButton1_Click(objectsender,EventArgse){stringuid="a",pwd="123";if((TextBox1.Text==uid)&&(TextBox2.Text==pwd))Response.Write("<script>alert('用戶名和密碼正確!')</script>");elseResponse.Write("<scriptlanguage='javascript'>alert('用戶名和密碼不正確!')</script>");}(五)HyperLink控件1.作用超級鏈接2.重要屬性TextNavigateUrlImageUrlToolTipTargetSkinID3.例子將NavigateUrl設置為default.aspx,然后再(1)設置Target為空(即默認值),查看效果;(2)設置Target為_blank,查看效果。HyperLink比<a></a>標記是更方便。(六)ImageButton控件1.作用顯示圖片的按鈕2.重要屬性ImageUrlImageAlignAlternateTextCausesValidationPostBackUrlOnClientClickToolTipClick事件3.例子ImageButton的例子BorderWidth為2BorderColor為紅色創建文件夾pic,存入圖片48.gifImageUrl="~/pic/48.gif"(六)LinkButton控件1.作用顯示為超級鏈接的按鈕2.重要屬性TextCausesValidationPostBackUrlOnClientClickToolTipClick事件(七)DropDownList控件1.作用顯示數據2.重要屬性添加項目聯動AutoPostBack屬性SelectedIndexChanged事件3.例子Page_LoadDropDownList1_SelectedIndexChangedDropDownList2_SelectedIndexChangedAutoPostBack屬性Button1_Click練習:DropDownList年、月、日聯動(八)ListBox控件1.作用顯示列表2.重要屬性ItemsSelectionMode->Single、Multiple添加新項目刪除選中項目查找是否有該項目清空所有的項目3.例子ListItem類型ListItem的兩個重要屬性:Text和Value創建一個ListItem對象:ListItemLi1=newListItem();Li1.Text=“hello”;Li1.Value=“1”;添加項目—判空、IsPostBack問題:每次點按鈕都添加了多項,如何解決?解決方案:判斷是否是第一次,是則添加項;否則什么也不做。ListBox1.Items.Add(newListItem(TextBox1.Text));添加時判斷是否為空Trim()方法邏輯:不為空添加新項目;為空,彈出不允許為空的對話框。刪除的業務邏輯單項刪除如果有選中的項目則刪除,否則提示“沒有項目被選中!”多項刪除從第一項到最后一項循環,如果第i項被選中則刪除。問題:怎么知道一共有多少項?某項被選中怎么區分?查找的業務邏輯如果找到則選中項目,否則提示“沒有找到”刪除代碼:ListBox1.Items.RemoveAt(i);//根據索引刪除項添加刪除確認對話框:在Page_Load事件中,寫入Button1.Attributes[“onClick”]=“javascript:return

confirm(‘你確認要刪除嗎?’);”

,然后在Button1_OnClick事件中寫入您的執行代碼。問題:多選刪除如何實現?第一想法:for(inti=0;i<ListBox1.Items.Count;i++)if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);}問題:連續的時候會少刪除其中一項,什么原因呢?改進后的刪除代碼:for(inti=ListBox1.Items.Count-1;i>=0;i--)//改變策略:從后往前刪除if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);}Response.Write("<script>alert('刪除成功!')</script>");2006級岳曉同學的代碼:for(inti=0;i<ListBox1.Items.Count;i++)if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);i=i-1;//此處做了改進}查找方案:查找要求:如果有則選中該項,沒有則提示“沒有滿足條件的項目”。ListBox1.Items.FindByText(TextBox1.Text)ListBox1.Items.IndexOf(item)ListBox1.Items[position].Selected查找代碼:ListItemitem=newListItem(TextBox1.Text);intposition=this.ListBox1.Items.IndexOf(item);if(position>=0){ListBox1.Items[position].Selected=true;}else{Response.Write("<script>alert('沒有滿足條件的項目!')</script>");}清空所有項目protectedvoidPage_Load(objectsender,EventArgse){Button5.Attributes["onclick"]="javascript:returnconfirm('Areyousuretodeleteallitems?')";}protectedvoidButton5_Click(objectsender,EventArgse){ListBox1.Items.Clear();}ListBox控件的常用屬性和方法ListBox1.Items.CountListBox1.Items.SelectedIndex可讀寫(賦值或被賦值)ListBox1.Items[i].TextListBox1.Items[i].Selected可讀寫(賦值或被賦值)ListBox1.Items.Add()ListBox1.Items.Insert()ListBox1.Items.RemoveAt()ListBox1.Items.Remove()ListBox1.Items.FindByText(TextBox1.Text)ListBox1.Items.IndexOf(item)(九)CheckBox控件1.作用可以多項選擇2.重要屬性屬性CheckedText方法3.例子CheckBox實現多項選擇添加3個CheckBox和一個Button,內容如圖所示。點擊“確定”按鈕,提示選擇的項目。protectedvoidButton1_Click(objectsender,EventArgse){strings="";if(CheckBox1.Checked)s=s+"您喜歡"+CheckBox1.Text;if(CheckBox2.Checked)s=s+"您喜歡"+CheckBox2.Text;if(CheckBox3.Checked)s=s+"您喜歡"+CheckBox3.Text;Response.Write(s);}(十)CheckBoxList控件1.作用相當于一組復選框2.重要屬性Items3.例子CheckBoxList實現多項選擇protectedvoidButton2_Click(objectsender,EventArgse){for(inti=0;i<CheckBoxList1.Items.Count;i++){if(CheckBoxList1.Items[i].Selected)Response.Write(CheckBoxList1.Items[i].Text);}}(十一)RadioButton控件1.作用實現單項選擇(互斥)2.重要屬性TextAutoPostBackGroupName3.例子鼠標滑過的特效:鼠標滑過時文本框內容被選中TextBox1.Attributes.Add("onMouseOver","this.focus();this.select();");鼠標點擊時文本框內容被清空TextBox1.Attributes.Add("onclick","this.value=''");(十二)RadioButtonList控件1.作用相當于一組RadioButton2.重要屬性Items3.例子輸入“1964”,點擊“查看”按鈕點擊“老年”,效果如下:處理屬性和事件TextAutoPostBackGroupNameprotectedvoidPage_Load(objectsender,EventArgse){}protectedvoidButton1_Click(objectsender,EventArgse){}protectedvoidRadioButton1_CheckedChanged(objectsender,EventArgse){}protectedvoidPage_Load(objectsender,EventArgse){TextBox1.Attributes.Add("onMouseOver","this.focus();this.select();");//TextBox1.Attributes.Add("onMouseOver","this.focus();this.select();this.value=''");//TextBox1.Attributes.Add("onclick","this.value=''");}protectedvoidRadioButton1_CheckedChanged(objectsender,EventArgse){Response.Write("你的年齡在15-30之間");}(十三)Panel控件1.作用容器:相當于組2.重要屬性GroupingText3.例子書上109頁例子不講,直接講“登錄模擬_Panel控件”的例子。(十四)Table控件1.作用容器,用于布局2.重要屬性HorizontalAlignBackColorBorderColorBorderStyleBorderWidthForeColorGridLinesFont-BoldHeightWidth3.組成(結合下圖說明)4.例子書上113頁例子的升級,講“動態創建表格并填充內容參考代碼”的例子。簡單總結:Table和Panel實際可以互相嵌套,只是一般最外層是Table.(十五)BulletedList控件1.作用為列表項增加項目符號2.重要屬性和方法Items屬性Items[i].Text屬性Insert和Add方法3.例子書上116頁例子加工,講“動態添加項目和點擊文字的即時變化”的例子。(十六)ImageMap控件1.作用相當于把一幅圖片虛擬分割成多個區域。2.重要屬性和事件ImageUrl屬性HotSpotMode屬性Click事件3.熱點區域的劃分4.例子書上117頁例子強力改造,形成了“網易、搜狐、雅虎、新浪網站導航”的例子。三、小結1.本章需要掌握控件的主要屬性、方法和事件,利用它們組合形成特定的功能。2.書上的文字內容不容易理解,通過例子學習更方便,然后再回頭。(循環反復)四、作業將書上的例子做一遍五、教學后記1.服務器控件的作用:實現用戶的交互,提供操作的接口。2.教材處理:書上的例子能夠滿足一定的需求,但是還不夠。(Butthat’snotenough)需要老師自己重新創造例子。(Doityourself)書上的例子有的課上不做了;有的課上讓學生自己做,然后演示;有的很好的、有一定難度的老師組織一起踐行。3.功能驅動法:首先展示系統的功能(即老師演示程序),讓學生有一個直觀感受,“知道自己去哪里”。4.面向過程與面向對象結合實際本章體現了堆積木原則,也是利用三種常見的程序結構(面向過程),而控件的屬性、方法則完全是面向對象的思想。5.學生也很有創造力實現ListBox多選刪除時,岳曉同學與老師的思路不同,同樣可以完成刪除。2006級岳曉同學的代碼:for(inti=0;i<ListBox1.Items.Count;i++)if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);i=i-1;//此處做了改進}六、參考資料《ASP.NET數據庫開發入門與提高》(清華大學出版社)《VisualC#2005編程實例精粹》(中國水利水電出版社)《VisualC#.NET可視化程序設計》(清華大學出版社)《ASP.NET動態網站開發基礎教程(C#篇)》(清華大學出版社)

授課題目第3章驗證控件授課類型理論課+實驗課教學方法講授、實例驅動教學手段多媒體教學授課時間學時分配5教學目的掌握表單驗證控件、比較驗證控件、范圍驗證控件、正則驗證控件、自定義邏輯驗證控件、驗證組控件的使用。教學重點框架知識頁面創建網站包括的基本要素教學難點框架知識其它教學基本內容備注ASP.NET提供了強大的驗證控件,它可以驗證服務器控件中用戶的輸入,并在驗證失敗的情況下顯示一條自定義錯誤消息。驗證控件直接在客戶端執行,用戶提交后執行相應的驗證無需使用服務器端進行驗證操作,從而減少了服務器與客戶端之間的往返過程。3.1表單驗證控件(RequiredFieldValidator)在實際的應用中,如在用戶填寫表單時,有一些項目是必填項,例如用戶名和密碼。在傳統的ASP中,當用戶填寫表單后,頁面需要被發送到服務器并判斷表單中的某項HTML控件的值是否為空,如果為空,則返回錯誤信息。在ASP.NET中,系統提供了RequiredFieldValidator驗證控件進行驗證。使用RequiredFieldValidator控件能夠指定某個用戶在特定的控件中必須提供相應的信息,如果不填寫相應的信息,RequiredFieldValidator控件就會提示錯誤信息,RequiredFieldValidator控件示例代碼如下所示。<body><formid="form1"runat="server"><div>姓名:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="必填字段不能為空"></asp:RequiredFieldValidator><br/>密碼:<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox><br/><asp:ButtonID="Button1"runat="server"Text="Button"/><br/></div></form></body>在進行驗證時,RequiredFieldValidator控件必須綁定一個服務器控件,在上述代碼中,驗證控件RequiredFieldValidator控件的服務器控件綁定為TextBox1,當TextBox1中的值為空時,則會提示自定義錯誤信息“必填字段不能為空”,如圖3-53所示。圖3-53RequiredFieldValidator驗證控件當姓名選項未填寫時,會提示必填字段不能為空,并且該驗證在客戶端執行。當發生此錯誤時,用戶會立即看到該錯誤提示而不會立即進行頁面提交,當用戶填寫完成并再次單擊按鈕控件時,頁面才會向服務器提交。3.2比較驗證控件(CompareValidator)比較驗證控件對照特定的數據類型來驗證用戶的輸入。因為當用戶輸入用戶信息時,難免會輸入錯誤信息,如當需要了解用戶的生日時,用戶很可能輸入了其他的字符串。CompareValidator比較驗證控件能夠比較控件中的值是否符合開發人員的需要。CompareValidator控件的特有屬性如下所示:ControlToCompare:以字符串形式輸入的表達式。要與另一控件的值進行比較。Operator:要使用的比較。Type:要比較兩個值的數據類型。ValueToCompare:以字符串形式輸入的表達式。當使用CompareValidator控件時,可以方便的判斷用戶是否正確輸入,示例代碼如下所示。<body><formid="form1"runat="server"><div>請輸入生日:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><br/>畢業日期:<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox><asp:CompareValidatorID="CompareValidator1"runat="server"ControlToCompare="TextBox2"ControlToValidate="TextBox1"CultureInvariantValues="True"ErrorMessage="輸入格式錯誤!請改正!"Operator="GreaterThan"Type="Date"></asp:CompareValidator><br/><asp:ButtonID="Button1"runat="server"Text="Button"/><br/></div></form></body>上述代碼判斷TextBox1的輸入的格式是否正確,當輸入的格式錯誤時,會提示錯誤,如圖3-54所示。圖3-54CompareValidator驗證控件CompareValidator驗證控件不僅能夠驗證輸入的格式是否正確,還可以驗證兩個控件之間的值是否相等。如果兩個控件之間的值不相等,CompareValidator驗證控件同樣會將自定義錯誤信息呈現在用戶的客戶端瀏覽器中。3.3范圍驗證控件(RangeValidator)范圍驗證控件(RangeValidator)可以檢查用戶的輸入是否在指定的上限與下限之間。通常情況下用于檢查數字、日期、貨幣等。范圍驗證控件(RangeValidator)控件的常用屬性如下所示。MinimumValue:指定有效范圍的最小值。MaximumValue:指定有效范圍的最大值。Type:指定要比較的值的數據類型。通常情況下,為了控制用戶輸入的范圍,可以使用該控件。當輸入用戶的生日時,今年是2011年,那么用戶就不應該輸入2012年,同樣基本上沒有人的壽命會超過100,所以對輸入的日期的下限也需要進行規定,示例代碼如下所示。<div>請輸入生日:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><asp:RangeValidatorID="RangeValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="超出規定范圍,請重新填寫"MaximumValue="2012/1/1"MinimumValue="1912/1/1"Type="Date"></asp:RangeValidator><br/><asp:ButtonID="Button1"runat="server"Text="Button"/></div>上述代碼將MinimumValue屬性值設置為1912/1/1,并能將MaximumValue的值設置為2012/1/1,當用戶的日期低于最小值或高于最高值時,則提示錯誤,如圖3-55所示。圖3-55RangeValidator驗證控件注意:RangeValidator驗證控件在進行控件的值的范圍的設定時,其范圍不僅僅可以是一個整數值,同樣還能夠是時間、日期等值。3.4正則驗證控件(RegularExpressionValidator)在上述控件中,雖然能夠實現一些驗證,但是驗證的能力是有限的,例如在驗證的過程中,只能驗證是否是數字,或者是否是日期。也可能在驗證時,只能驗證一定范圍內的數值,雖然這些控件提供了一些驗證功能,但卻限制了開發人員進行自定義驗證和錯誤信息的開發。為實現一個驗證,很可能需要多個控件同時搭配使用。正則驗證控件(RegularExpressionValidator)就解決了這個問題,正則驗證控件的功能非常的強大,它用于確定輸入的控件的值是否與某個正則表達式所定義的模式相匹配,如電子郵件、電話號碼以及序列號等。正則驗證控件(RegularExpressionValidator)常用的屬性是ValidationExpression,它用來指定用于驗證的輸入控件的正則表達式。客戶端的正則表達式驗證語法和服務端的正則表達式驗證語法不同,因為在客戶端使用的是JSript正則表達式語法,而在服務器端使用的是Regex類提供的正則表達式語法。使用正則表達式能夠實現強大字符串的匹配并驗證用戶的輸入的格式是否正確,系統提供了一些常用的正則表達式,開發人員能夠選擇相應的選項進行規則篩選,如圖3-56所示。圖3-56系統提供的正則表達式當選擇了正則表達式后,系統自動生成的HTML代碼如下所示。<asp:RegularExpressionValidatorID="RegularExpressionValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="正則不匹配,請重新輸入!"ValidationExpression="\d{17}[\d|X]|\d{15}"></asp:RegularExpressionValidator>運行后當用戶單擊按鈕控件時,如果輸入的信息與相應的正則表達式不匹配,則會提示錯誤信息,如圖3-57所示。圖3-57RegularExpressionValidator驗證控件同樣,開發人員也可以自定義正則表達式來規范用戶的輸入。使用正則表達式能夠加快驗證速度并在字符串中快速匹配,而另一方面,使用正則表達式能夠減少復雜的應用程序的功能開發和實現。注意:在用戶輸入為空時,其他的驗證控件都會驗證通過。所以,在驗證控件的使用中,通常需要同表單驗證控件(RequiredFieldValidator)一起使用。3.5自定義邏輯驗證控件(CustomValidator)自定義邏輯驗證控件(CustomValidator)允許使用自定義的驗證邏輯創建驗證控件。例如,可以創建一個驗證控件判斷用戶輸入的是否包含“.”號,示例代碼如下所示。protectedvoidCustomValidator1_ServerValidate(objectsource,ServerValidateEventArgsargs){args.IsValid=args.Value.ToString().Contains("."); //設置驗證程序,并返回布爾值}protectedvoidButton1_Click(objectsender,EventArgse) //用戶自定義驗證{if(Page.IsValid) //判斷是否驗證通過{Label1.Text="驗證通過"; //輸出驗證通過}else{Label1.Text="輸入格式錯誤"; //提交失敗信息}}上述代碼不僅使用了驗證控件自身的驗證,也使用了用戶自定義驗證,運行結果如圖3-58所示。圖3-58CustomValidator驗證控件從CustomValidator驗證控件的驗證代碼可以看出,CustomValidator驗證控件可以在服務器上執行驗證檢查。如果要創建服務器端的驗證函數,則處理CustomValidator控件的ServerValidate事件。使用傳入的ServerValidateEventArgs的對象的IsValid字段來設置是否通過驗證。而CustomValidator控件同樣也可以在客戶端實現,該驗證函數可用VBScript或Jscript來實現,而在CustomValidator控件中需要使用ClientValidationFunction屬性指定與CustomValidator控件相關的客戶端驗證腳本的函數名稱進行控件中的值的驗證。3.6驗證組控件(ValidationSummary)驗證組控件(ValidationSummary)能夠對同一頁面的多個控件進行驗證。同時,驗證組控件(ValidationSummary)通過ErrorMessage屬性為頁面上的每個驗證控件顯式錯誤信息。驗證組控件(ValidationSummary)的常用屬性如下所示。DisplayMode:摘要可顯示為列表,項目符號列表或單個段落。HeaderText:標題部分指定一個自定義標題。ShowMessageBox:是否在消息框中顯示摘要。ShowSummary:控制是顯示還是隱藏ValidationSummary控件。驗證控件能夠顯示頁面的多個控件產生的錯誤,示例代碼如下所示。<body><formid="form1"runat="server"><div>姓名:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="姓名為必填項"></asp:RequiredFieldValidator><br/>身份證:<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox><asp:RegularExpressionValidatorID="RegularExpressionValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="身份證號碼錯誤"ValidationExpression="\d{17}[\d|X]|\d{15}"></asp:RegularExpressionValidator><br/><asp:ButtonID="Button1"runat="server"Text="Button"/><asp:ValidationSummaryID="ValidationSummary1"runat="server"/></div></form></body>運行結果如圖3-59所示。圖3-59ValidationSummary驗證控件當有多個錯誤發生時,ValidationSummary控件能夠捕獲多個驗證錯誤并呈現給用戶,這樣就避免了一個表單需要多個驗證時需要使用多個驗證控件進行綁定,使用ValidationSummary控件就無需為每個需要驗證的控件進行綁定。

授課題目第4章常用的內置對象授課類型理論課+實驗課教學方法講授、實例驅動教學手段多媒體教學授課時間學時分配10教學目的通過本次課程的學習,主要掌握以下內置對象的用法:5.1Response對象5.2Server對象5.3Session對象5.4Application對象5.5Request對象教學重點Response對象Server對象Session對象Request對象教學難點Session對象其它教學基本內容備注一、新課導入面向對象程序設計時我們已經講過,類成員分為對象成員和類成員,類成員可以不用定義對象直接用類名調用即可。ASP.NET中提供了5中常用的內置對象,直接通過類名就可以調用相關的屬性和方法,實際應用非常廣泛。二、授課內容提要第4章服務器控件4.1Response對象1.作用頁面輸出內容和跳轉導航2.重要屬性BufferOutPut屬性

是否使用緩存Write()向客戶端發送字符串信息Clear()清除緩存Flush()

強制輸出緩存的所有數據Redirect()網頁轉向地址End()終止當前頁的運行

WriteFile()讀取一個文件,并且寫入客戶端輸出流3.例子(1)Response.Write變量數據或字符串Response.Write(變量數據或字符串)(2)Response對象的Redirect方法將客戶端瀏覽器直接重定向到另外的URL上,即跳轉到另一個網頁。例如:Response.Redirect("/")Response對象練習Response彈出新頁面,如何實現?寫法一:Response.Write("<script>window.open('WebForm2.aspx')</script>")

寫法二:Response.Write("<script>window.open(\"login.aspx\")</script>");4.2Server對象1.作用Server對象獲取路徑2.重要屬性MachineName:獲取服務器的計算機名稱。

ScriptTimeout:獲取和設置請求超時(以秒計)。CreateObject()創建COM對象的一個服務器實例。Execute()執行當前服務器上的另一個aspx頁,執行完該頁后再返回本頁繼續執行HtmlEncode()對要在瀏覽器中顯示的字符串進行HTML編碼并返回已編碼的字符串。HtmlDecode()對HTML編碼的字符串進行解碼,并返回已解碼的字符串。MapPath()返回與Web服務器上的指定虛擬路徑相對應的物理文件路徑。Transfer()終止當前頁的執行,并為當前請求開始執行新頁。UrlEncode()將代表URL的字符串進行編碼,以便通過URL從Web服務器到客戶端進行可靠的HTTP傳輸。UrlDecode()對已被編碼的URL字符串進行解碼,并返回已解碼的字符串。UrlPathEncode()對URL字符串的路徑部分進行URL編碼,并返回已編碼的字符串。3.例子Server對象練習1、Server對象顯示當前程序在服務器上的物理路徑,如何實現?參考答案:Response.Write(Server.MapPath(""));2、Server對象顯示某個相對的文件夾的物理路徑,如何實現?參考答案1:Response.Write(Server.MapPath("data"));3、有沒有其他方法實現問題2?參考答案:Response.Write(Server.MapPath("")+"\\data");4、Server對象顯示文件在服務器上的全路徑,如何實現?參考答案:Response.Write(Server.MapPath("login.aspx"));4.3Session對象1.作用Session對象實現頁面間傳遞參數2.重要屬性和方法Count獲取會話狀態集合中Session對象的個數Session對象的個數TimeOut獲取并設置在會話狀態提供程序終止會話之前各請求之間所允許的超時期限超時期限(以分鐘為單位)SessionID獲取用于標識會話的唯一會話ID會話IDAdd新增一個Session對象Clear清除會話狀態中的所有值Remove刪除會話狀態集合中的項RemoveAll清除所有會話狀態值3.例子對于一個Web應用程序而言,所有用戶訪問到的Application對象的內容是完全一樣的;而不同用戶會話訪問到的Session對象的內容則各不相同。

Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。Session提供了一種頁面之間傳遞參數的方法。(1)將新的項添加到會話狀態中(一般在登錄頁面使用)語法格式為:Session("鍵名")=值或者Session.Add("鍵名",值)(2)按名稱獲取會話狀態中的值(一般在主頁面使用)語法格式為:變量=Session("鍵名")

或者

變量=Session.Item("鍵名")(3)刪除會話狀態集合中的項語法格式為:

Session.Remove("鍵名")(4)清除會話狀態中的所有值語法格式為:

Session.RemoveAll()或者

Session.Clear()(5)取消當前會話語法格式為:

Session.Abandon()(6)設置會話狀態的超時期限,以分鐘為單位。語法格式為:

Session.TimeOut=數值Session實現頁面之間傳遞變量功能:1、在第一個頁面(Session1.aspx)輸入用戶名和密碼,如果錯誤提示“用戶名或密碼錯誤”對話框,否則轉到另一個頁面(Session2.aspx),并在第二個頁面顯示用戶名和密碼。2、如果用戶沒用登錄,則不能直接進入第二個頁面(Session2.aspx),而是返回到第一個登錄頁面。參考代碼11、Session1.aspx中的Button1的Click事件代碼:protectedvoidButton1_Click(objectsender,EventArgse){if((TextBox1.Text.Trim()=="a")&&(TextBox2.Text=="123")){Session["uid"]="a";Session["pwd"]="123";Response.Redirect("Session2.aspx");}elseResponse.Write("<script>alert('用戶名或密碼錯誤')</script>");}參考代碼22、Session2.aspx中的Page_Load事件代碼:protectedvoidPage_Load(objectsender,EventArgse){if(Session["uid"]==null)Response.Redirect("Session1.aspx");else{Response.Write("用戶名是:"+Session["uid"].ToString()+"<br>");Response.Write("密碼是:"+Session["pwd"].ToString()+"<br>");}}4.4Application對象1.作用Application對象全局變量共享,網站計數2.重要屬性和事件Application對象的屬性AllKeys獲取HttpApplicationState集合中的訪問鍵HttpApplicationState對象名的字符串數組Count獲取HttpApplicationState集合中的對象數集合中的Item對象數。默認為0Application對象的方法Add新增一個新的Application對象變量Clear清除全部的Application對象變量Get使用索引關鍵字或變數名稱得到變量值GetKey使用索引關鍵字來獲取變量名稱Lock鎖定全部的Application變量Remove使用變量名稱刪除一個Application對象RemoveAll刪除全部的Application對象變量Set使用變量名更新一個Application對象變量的內容UnLock解除鎖定的Application變量Application對象的事件Session_OnStartSession_OnEndApplication_StartApplication_EndApplication_Error3.理論介紹Application對象是HttpApplicationState類的一個實例,定義ASP.NET應用程序中的所有應用程序對象通用的方法、屬性和事件。Application的原理是在服務器端建立一個狀態變量,來存儲所需的信息。要注意的是,首先,這個狀態變量是建立在內存中的,其次是這個狀態變量是可以被網站的所有頁面訪問的。4.例子Application實現計數器添加Global.asax文件網站→添加新項→全局應用程序類Global.asax文件的Application_Start事件中寫代碼如下:Application實現計數器voidApplication_Start(objectsender,EventArgse){Application["counter"]=0;}創建一個頁面counter.aspx,然后添加一個Label,在頁面的Page_Load寫如下代碼:protectedvoidPage_Load(objectsender,EventArgse){Application["counter"]=Convert.ToInt32(Application["counter"])+1;Label1.Text="您是本網站的第"+Application["counter"].ToString()+"位訪問者";}Application實現防刷新計數器(1)網站->添加新項->選“文本文件”,文件名為“Site_Counter”,在文件中寫入一個“0”,然后保存。Global.asax文件的Application_Start事件中寫代碼如下:voidApplication_Start(objectsender,EventArgse){System.IO.StreamReaderrd=newSystem.IO.StreamReader(Server.MapPath("Site_Counter.txt"));Application.Lock();Application["Site_Counter"]=int.Parse(rd.ReadLine());Application.UnLock();rd.Close();}Application實現防刷新計數器(2)Global.asax文件的Session_Start事件中寫代碼如下:voidSession_Start(objectsender,EventArgse){Application.Lock();Application["Site_Counter"]=Convert.ToInt32(Application["Site_Counter"])+1;Application.UnLock();System.IO.StreamWriterwt=newSystem.IO.StreamWriter(Server.MapPath("Site_Counter.txt"),false);Application.Lock();wt.WriteLine(Application["Site_Counter"]);Application.UnLock();wt.Close();}Application實現防刷新計數器(3)創建一個頁面counter.aspx,然后添加一個Label,在頁面的Page_Load寫如下代碼:protectedvoidPage_Load(objectsender,EventArgse){Label1.Text="您是本網站的第"+Application["Site_Counter"].ToString()+"位訪問者";}4.5Request對象1.作用Request對象傳遞參數和獲取信息2.重要屬性QueryString獲取HTTP查詢字符串變量集合NameValueCollection對象Path獲取當前請求的虛擬路徑當前請求的虛擬路徑UserHostAddress獲取遠程客戶端的IP主機地址遠程客戶端的IP地址Browser獲取有關正在請求的客戶端的瀏覽器功能的信息HttpBrowserCapabilities對象BinaryRead執行對當前輸入流進行指定字節數的二進制讀取MapPath為當前請求將請求的URL中的虛擬路徑映射到服務器上的物理路徑3.例子在服務器上創建并向客戶端輸出Cookie可以利用Response對象實現。

Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。

通過Request對象的Cookies集合來訪問CookieCookie的例子(1)添加兩個按鈕,如圖所示。添加Cookie的按鈕編程如下:protectedvoidButton1_Click(objectsender,EventArgse){HttpCookiecookie=newHttpCookie("MyCook");//初使化并設置Cookie的名稱DateTimedt=DateTime.Now;TimeSpants=newTimeSpan(0,0,1,0,0);//過期時間為1分鐘cookie.Expires=dt.Add(ts);//設置過期時間cookie.Values.Add("userid","userid_value");cookie.Values.Add("userid2","userid2_value2");Response.AppendCookie(cookie);}Cookie的例子(2)顯示Cookie的按鈕編程如下:protectedvoidButton2_Click(objectsender,EventArgse){if(Request.Cookies["MyCook"]!=null){Response.Write("Cookie中鍵值為userid的值:"+Request.Cookies["MyCook"]["userid"]);//整行Response.Write("Cookie中鍵值為userid2的值"+Request.Cookies["MyCook"]["userid2"]);//Response.Write(Request.Cookies["MyCook"].Value);//輸出全部的值//Response.Write(Request.Cookies["MyCook"].Value);Response.Write("Cookie中鍵值為userid的值:"+Request.Cookies["MyCook"].Expires.ToString());//整行}else{Response.Write("給定的Cookie不存在!");}}您可以通過多種方法把Cookie添加到Response.Cookies集合中。以下示例介紹了兩種完成此任務的方法:Response.Cookies("userName").Value="mike"Response.Cookies("userName").Expires=DateTime.Now.AddDays(1)DimaCookieAsNewHttpCookie("lastVisit")aCookie.Value=DateTime.Now.ToStringaCookie.Expires=DateTime.Now.AddDays(1)Response.Cookies.Add(aCookie)三、小結1.5種內置控件主要用到它們的屬性和方法,可以實現很多輔助功能,它們都是不可見的(確切地說,它們設置算不上控件)。2.通過例子和對比才能對控件了解更深刻。四、作業說出常見的內置控件的類型和它們的作用。五、教學后記1.內置對象的作用:實現幕后的操縱。2.登山式和堆積木式授課方式:從簡單到復雜,堆積木式的教學效果更好。3.逆向思維教學法:首先講解實例,通過實驗讓學生自己總結屬性、方法的作用。六、參考資料《ASP.NET數據庫開發入門與提高》(清華大學出版社)《VisualC#2005編程實例精粹》(中國水利水電出版社)《VisualC#.NET可視化程序設計》(清華大學出版社)《ASP.NET動態網站開發基礎教程(C#篇)》(清華大學出版社)

授課題目第6章皮膚、主題和母版頁授課類型理論課+實驗課教學方法講授、實例驅動教學手段多媒體教學授課時間學時分配10教學目的掌握皮膚的應用、主題和母版頁的使用。教學重點母版頁的設計教學難點母版頁的設計其它教學基本內容備注使用系統默認母版完成客戶界面設計。在Web應用程序開發中,一個良好的Web應用程序界面能夠讓網站的訪問者耳目一新,當用戶訪問Web應用時,網站的界面和布局能夠提升訪問者對網站的興趣和繼續瀏覽的耐心。ASP.NET提供了皮膚、主題和模板頁的功能增強了網頁布局和界面優化的功能,這樣即可輕松的實現對網站開發中界面的控制。6.1皮膚和主題皮膚和主題是自ASP.NET2.0就包括的內容,使用皮膚和主題,能夠將樣式和布局信息分解到單獨的文件中,讓布局代碼和頁面代碼相分離。主題可以應用到各個站點,當需要更改頁面主題時,無需對每個頁面進行更改,只需要針對主題代碼頁進行更改即可。6.1.1CSS簡介在任何Web應用程序的開發過程中,CSS(CascadingStyleSheets,級聯樣式表)都是非常重要的頁面布局方法,而且CSS也是最高效的頁面布局方法。CSS發展于1994年10月,是為了補救HTML3.2語法中的不足,但是由于當時網絡的發展的不足和瀏覽器的支持率較低,直到1996年底,才正式發表了CSS1.0規格,也正是1996年之后,瀏覽器才開始正式的支持CSS。在網頁布局中,CSS經常被使用于頁面樣式布局和樣式控制。熟練的使用CSS能夠讓網頁布局更加的方便,在頁面維護時,也能夠減少工作量。通常CSS能夠支持三種定義方式,一是直接將樣式控制放置于單個HTML元素內,稱為內聯式;二是在網頁的head部分定義樣式,稱為嵌入式;三是以擴展名為.css文件保存樣式,稱為外聯式。這三種樣式適用于不同的場合,內聯式適用于對單個標簽進行樣式控制,這樣的好處就在于開發方便,而在維護時,就需要針對每個頁面進行修改,非常的不方便;而嵌入式可以控制一個網頁的多個樣式,當需要對網頁樣式進行修改時,只需要修改head標簽中的style標簽即可,不過這樣仍然沒有讓布局代碼和頁面代碼完全分離;而外聯式能夠將布局代碼和頁面代碼相分離,在維護過程中,能夠減少工作量。6.1.2CSS基礎CSS能夠通過編寫樣式控制代碼來進行頁面布局,在編寫相應的HTML標簽時,可以通過Style屬性進行CSS樣式控制,示例代碼如下所示。<body><divstyle="font-size:14px;">這是一段文字</div></body>上述代碼使用內聯式進行樣式控制,并將屬性設置為font-size:14px,其意義就在于定義文字的大小為14px;同樣,如果需要定義多個屬性時,可以同寫在一個style屬性中,示例代碼如下所示。<body><divstyle="font-size:14px;">這是一段文字1</div><divstyle="font-size:14px;font-weight:bolder">這是一段文字2</div><divstyle="font-size:14px;font-style:italic">這是一段文字3</div><divstyle="font-size:14px;font-variant:small-caps">ThisisMyFirstCSScode</div><divstyle="font-size:14px;color:red">這是一段文字5</div></body>上述代碼分別定義了相關屬性來控制樣式,并且都使用內聯式定義樣式,這些CSS的屬性的意義如下所示:字體名稱屬性(font-family):該屬性設定字體名稱,如Arial,、Tahoma,、Courier等,可以定義字體的名稱。字體大小屬性(font-size):該屬性可以設置字體的大小。字體大小的設置可以有多種方式,最常用的就是pt和px。該屬性有三個值可選:normal,、italic、oblique、normal是默認值,italic、oblique都是斜體顯示。字體粗細屬性(font-weight):該屬性常用值是normal和bold,normal是默認值,bold是粗體。字體變量屬性(font-variant):該屬性有兩個值normal和small-caps,normal是默認值。small-caps表示字體將被顯示成大寫。字體屬性(font):該屬性是各種字體屬性的一種快捷的綜合寫法。字體顏色(color):該屬性用來控制字體顏色。這些屬性分別定義了字體屬性,如圖7-1所示。圖7-1CSS樣式控制用內聯式的方法進行樣式控制固然簡單,但是在維護過程中卻是非常的復雜和難以控制。當需要對頁面中的布局進行更改時,則需要對每個頁面的每個標簽的樣式進行更改,這樣無疑增大的工作量,當需要對頁面進行布局時,可以使用嵌入式的方法進行頁面布局,示例代碼如下所示。<head><metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/><title>這是一段文字1</title><styletype="text/css">.font1{font-size:14px;}.font2{font-size:14px;font-weight:bolder;}.font3{font-size:14px;font-style:italic;}.font4{font-size:14px;font-variant:small-caps;}.font5{font-size:14px;color:red;}</style></head>上述代碼分別定義了5種字體樣式,這些樣式都是通過“.”號加樣式名稱定義的,在定義了字體樣式后,就可以在相應的標簽中使用class屬性來定義樣式,示例代碼如下所示。<body><divclass="font1">這是一段文字1</div><divclass="font2">這是一段文字2</div><divclass="font3">這是一段文字3</div><divclass="font4">ThisisMyFirstCSScode</div><divclass="font5">這是一段文字5</div></body>其運行后的結果依然同11-12所示,但是這樣編寫代碼在維護起來更加的方便,只需要找到head中的style標簽,就可以對樣式進行全局控制。雖然嵌入式能夠解決單個頁面的樣式問題,但是這樣只能針對單個頁面進行樣式控制,而在很多網站的開發應用中,大量的頁面樣式基本相同,只有少數的頁面不盡相同,所以使用嵌入式還是有不足,這里就可以使用外聯式。使用外聯式,必須創建一個.css文件后綴的文件,并在當前頁面中添加引用,.css頁面代碼如下所示。.font1{font-size:14px;}.font2{font-size:14px;font-weight:bolder;}.font3{font-size:14px;font-style:italic;}.font4{font-size:14px;font-variant:small-caps;}.font5{font-size:14px;color:red;}在.css文件中,只需要定義如head標簽中的style標簽的內容即可,其編寫方法也與內聯式和內嵌式相同。在編寫完成CSS文件后,需要在使用的頁面的head標簽中添加引用,示例代碼如下所示。<linkhref="css.css"type="text/css"rel="stylesheet"></link>上述代碼添加了一個css.css文件的引用,意在告訴瀏覽器當前頁面的一些樣式可以在css.css中找到并解析。在使用了外聯式后,當前頁面的HTML代碼就能夠變得簡單和整潔,示例代碼如下所示。<htmlxmlns="/1999/xhtml"><head><metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/><tit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論