




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)用文檔《ASP.NET》課程教案20162017學(xué)年第二學(xué)期任課教師張成年任課班級(jí)軟件153課程名稱ASP.NET課程類型專業(yè)必修課總學(xué)時(shí)80二O一七年二月授課題目第1章搭建ASP.NET開發(fā)環(huán)境授課類型理論課+實(shí)驗(yàn)課教學(xué)方法講授、實(shí)例驅(qū)動(dòng)教學(xué)手段多媒體教學(xué)授課時(shí)間學(xué)時(shí)分配3教學(xué)目的通過(guò)本次課程的學(xué)習(xí),主要掌握visualstudio開發(fā)環(huán)境的框架知識(shí),安裝知識(shí)和開發(fā)環(huán)境常用操作:教學(xué)重點(diǎn)框架知識(shí)頁(yè)面創(chuàng)建網(wǎng)站包括的基本要素教學(xué)難點(diǎn)框架知識(shí)其它教學(xué)基本內(nèi)容備注一、新課導(dǎo)入我們已經(jīng)學(xué)習(xí)了C#程序語(yǔ)言,掌握了面向?qū)ο缶幊痰幕A(chǔ),再進(jìn)一步了解框架相關(guān)知識(shí)。包括一個(gè)完整網(wǎng)站包括的基本要素和常用的操作。
授課題目第2章服務(wù)器控件授課類型理論課+實(shí)驗(yàn)課教學(xué)方法講授、實(shí)例驅(qū)動(dòng)教學(xué)手段多媒體教學(xué)授課時(shí)間學(xué)時(shí)分配15教學(xué)目的通過(guò)本次課程的學(xué)習(xí),主要掌握以下控件的應(yīng)用:Page頁(yè)面Label控件TextBox控件Button控件HyperLink控件Image控件ImageButton控件LinkButton控件DropDownList控件ListBox控件CheckBox控件CheckBoxList控件RadioButton控件RadioButtonList控件Panel控件Table控件BulletedList控件ImageMap控件教學(xué)重點(diǎn)Label控件TextBox控件Button控件DropDownList控件ListBox控件RadioButtonList控件Panel控件Table控件ImageMap控件教學(xué)難點(diǎn)ListBox控件RadioButtonList控件Table控件ImageMap控件其它教學(xué)基本內(nèi)容備注授課內(nèi)容提要第2章服務(wù)器控件(一)Page頁(yè)面1.作用容器:承載控件2.重要屬性IsPostBack3.例子Page.IsPostBack屬性實(shí)驗(yàn):添加一個(gè)Web窗體,在頁(yè)面上放一個(gè)按鈕和一個(gè)標(biāo)簽(Label)控件,將Label的Text屬性設(shè)置為0。在Page_Load事件中寫代碼:if(!Page.IsPostBack){intx=int.Parse(Label2.Text)+1;Label2.Text=x.ToString();}運(yùn)行,不斷點(diǎn)擊按鈕。改變后對(duì)比(去掉if判斷)protectedvoidPage_Load(objectsender,EventArgse){intx=int.Parse(Label2.Text)+1;Label2.Text=x.ToString();}運(yùn)行,不斷點(diǎn)擊按鈕。(二)Label控件1.作用顯示數(shù)據(jù)2.重要屬性BackColorBorderStyleBorderWidthTextEnableThemingSkinIDHeightWidth3.例子//Label的例子:更改Text屬性和背景顏色floatsalary=4100.2f;if(salary>2000)Label1.Text="您需要交稅";elseLabel1.Text="您不需要交稅";此處填寫更改顏色的代碼Label1.BackColor=……//Label的例子:更改Text屬性和背景顏色(三)TextBox控件1.作用數(shù)據(jù)輸入控件2.重要屬性和方法BorderColorBorderStyleBorderWidthTextEnableThemingSkinIDTextMode->SingleLine、MultiLine、PasswordReadOnly3.例子TextBox的ReadOnly屬性測(cè)試:放一個(gè)文本框(TextBox),將其ReadOnly屬性設(shè)置為true,運(yùn)行看結(jié)果如何?問(wèn)題:在哪里能夠修改文本框的值呢?參考答案:一是在設(shè)計(jì)時(shí)通過(guò)屬性窗口修改Text屬性,二是在事件中通過(guò)代碼修改Text屬性(四)Button控件1.作用響應(yīng)用戶操作(鼠標(biāo)和鍵盤事件)。2.重要屬性和事件BorderColorBorderStyleBorderWidthTextEnableThemingSkinIDCausesValidation—是否引發(fā)驗(yàn)證OnClientClick-->指定單擊按鈕時(shí)執(zhí)行的客戶端腳本代碼函數(shù)名UseSubmitBehavior->指示按鈕是否呈現(xiàn)為提交按鈕,默認(rèn)為truePostBackUrl-->指定單擊此按鈕時(shí)回發(fā)到的頁(yè)面的URL,默認(rèn)為本頁(yè)在目標(biāo)頁(yè)面中用Page.PreviousPage.FindControl()方法獲取數(shù)據(jù)Click事件3.例子標(biāo)簽、文本框、按鈕的綜合例子--模擬登錄程序知識(shí)點(diǎn):TextBox的TextMode屬性If語(yǔ)句彈出提示對(duì)話框(可以帶上耳機(jī))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.作用超級(jí)鏈接2.重要屬性TextNavigateUrlImageUrlToolTipTargetSkinID3.例子將NavigateUrl設(shè)置為default.aspx,然后再(1)設(shè)置Target為空(即默認(rèn)值),查看效果;(2)設(shè)置Target為_blank,查看效果。HyperLink比<a></a>標(biāo)記是更方便。(六)ImageButton控件1.作用顯示圖片的按鈕2.重要屬性ImageUrlImageAlignAlternateTextCausesValidationPostBackUrlOnClientClickToolTipClick事件3.例子ImageButton的例子BorderWidth為2BorderColor為紅色創(chuàng)建文件夾pic,存入圖片48.gifImageUrl="~/pic/48.gif"(六)LinkButton控件1.作用顯示為超級(jí)鏈接的按鈕2.重要屬性TextCausesValidationPostBackUrlOnClientClickToolTipClick事件(七)DropDownList控件1.作用顯示數(shù)據(jù)2.重要屬性添加項(xiàng)目聯(lián)動(dòng)AutoPostBack屬性SelectedIndexChanged事件3.例子Page_LoadDropDownList1_SelectedIndexChangedDropDownList2_SelectedIndexChangedAutoPostBack屬性Button1_Click練習(xí):DropDownList年、月、日聯(lián)動(dòng)(八)ListBox控件1.作用顯示列表2.重要屬性ItemsSelectionMode->Single、Multiple添加新項(xiàng)目刪除選中項(xiàng)目查找是否有該項(xiàng)目清空所有的項(xiàng)目3.例子ListItem類型ListItem的兩個(gè)重要屬性:Text和Value創(chuàng)建一個(gè)ListItem對(duì)象:ListItemLi1=newListItem();Li1.Text=“hello”;Li1.Value=“1”;添加項(xiàng)目—判空、IsPostBack問(wèn)題:每次點(diǎn)按鈕都添加了多項(xiàng),如何解決?解決方案:判斷是否是第一次,是則添加項(xiàng);否則什么也不做。ListBox1.Items.Add(newListItem(TextBox1.Text));添加時(shí)判斷是否為空Trim()方法邏輯:不為空添加新項(xiàng)目;為空,彈出不允許為空的對(duì)話框。刪除的業(yè)務(wù)邏輯單項(xiàng)刪除如果有選中的項(xiàng)目則刪除,否則提示“沒(méi)有項(xiàng)目被選中!”多項(xiàng)刪除從第一項(xiàng)到最后一項(xiàng)循環(huán),如果第i項(xiàng)被選中則刪除。問(wèn)題:怎么知道一共有多少項(xiàng)?某項(xiàng)被選中怎么區(qū)分?查找的業(yè)務(wù)邏輯如果找到則選中項(xiàng)目,否則提示“沒(méi)有找到”刪除代碼:ListBox1.Items.RemoveAt(i);//根據(jù)索引刪除項(xiàng)添加刪除確認(rèn)對(duì)話框:在Page_Load事件中,寫入Button1.Attributes[“onClick”]=“javascript:return
confirm(‘你確認(rèn)要?jiǎng)h除嗎?’);”
,然后在Button1_OnClick事件中寫入您的執(zhí)行代碼。問(wèn)題:多選刪除如何實(shí)現(xiàn)?第一想法:for(inti=0;i<ListBox1.Items.Count;i++)if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);}問(wèn)題:連續(xù)的時(shí)候會(huì)少刪除其中一項(xiàng),什么原因呢?改進(jìn)后的刪除代碼: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級(jí)岳曉同學(xué)的代碼:for(inti=0;i<ListBox1.Items.Count;i++)if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);i=i-1;//此處做了改進(jìn)}查找方案:查找要求:如果有則選中該項(xiàng),沒(méi)有則提示“沒(méi)有滿足條件的項(xiàng)目”。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('沒(méi)有滿足條件的項(xiàng)目!')</script>");}清空所有項(xiàng)目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.作用可以多項(xiàng)選擇2.重要屬性屬性CheckedText方法3.例子CheckBox實(shí)現(xiàn)多項(xiàng)選擇添加3個(gè)CheckBox和一個(gè)Button,內(nèi)容如圖所示。點(diǎn)擊“確定”按鈕,提示選擇的項(xiàng)目。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.作用相當(dāng)于一組復(fù)選框2.重要屬性Items3.例子CheckBoxList實(shí)現(xiàn)多項(xiàng)選擇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.作用實(shí)現(xiàn)單項(xiàng)選擇(互斥)2.重要屬性TextAutoPostBackGroupName3.例子鼠標(biāo)滑過(guò)的特效:鼠標(biāo)滑過(guò)時(shí)文本框內(nèi)容被選中TextBox1.Attributes.Add("onMouseOver","this.focus();this.select();");鼠標(biāo)點(diǎn)擊時(shí)文本框內(nèi)容被清空TextBox1.Attributes.Add("onclick","this.value=''");(十二)RadioButtonList控件1.作用相當(dāng)于一組RadioButton2.重要屬性Items3.例子輸入“1964”,點(diǎn)擊“查看”按鈕點(diǎn)擊“老年”,效果如下:處理屬性和事件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.作用容器:相當(dāng)于組2.重要屬性GroupingText3.例子書上109頁(yè)例子不講,直接講“登錄模擬_Panel控件”的例子。(十四)Table控件1.作用容器,用于布局2.重要屬性HorizontalAlignBackColorBorderColorBorderStyleBorderWidthForeColorGridLinesFont-BoldHeightWidth3.組成(結(jié)合下圖說(shuō)明)4.例子書上113頁(yè)例子的升級(jí),講“動(dòng)態(tài)創(chuàng)建表格并填充內(nèi)容參考代碼”的例子。簡(jiǎn)單總結(jié):Table和Panel實(shí)際可以互相嵌套,只是一般最外層是Table.(十五)BulletedList控件1.作用為列表項(xiàng)增加項(xiàng)目符號(hào)2.重要屬性和方法Items屬性Items[i].Text屬性Insert和Add方法3.例子書上116頁(yè)例子加工,講“動(dòng)態(tài)添加項(xiàng)目和點(diǎn)擊文字的即時(shí)變化”的例子。(十六)ImageMap控件1.作用相當(dāng)于把一幅圖片虛擬分割成多個(gè)區(qū)域。2.重要屬性和事件ImageUrl屬性HotSpotMode屬性Click事件3.熱點(diǎn)區(qū)域的劃分4.例子書上117頁(yè)例子強(qiáng)力改造,形成了“網(wǎng)易、搜狐、雅虎、新浪網(wǎng)站導(dǎo)航”的例子。三、小結(jié)1.本章需要掌握控件的主要屬性、方法和事件,利用它們組合形成特定的功能。2.書上的文字內(nèi)容不容易理解,通過(guò)例子學(xué)習(xí)更方便,然后再回頭。(循環(huán)反復(fù))四、作業(yè)將書上的例子做一遍五、教學(xué)后記1.服務(wù)器控件的作用:實(shí)現(xiàn)用戶的交互,提供操作的接口。2.教材處理:書上的例子能夠滿足一定的需求,但是還不夠。(Butthat’snotenough)需要老師自己重新創(chuàng)造例子。(Doityourself)書上的例子有的課上不做了;有的課上讓學(xué)生自己做,然后演示;有的很好的、有一定難度的老師組織一起踐行。3.功能驅(qū)動(dòng)法:首先展示系統(tǒng)的功能(即老師演示程序),讓學(xué)生有一個(gè)直觀感受,“知道自己去哪里”。4.面向過(guò)程與面向?qū)ο蠼Y(jié)合實(shí)際本章體現(xiàn)了堆積木原則,也是利用三種常見的程序結(jié)構(gòu)(面向過(guò)程),而控件的屬性、方法則完全是面向?qū)ο蟮乃枷搿?.學(xué)生也很有創(chuàng)造力實(shí)現(xiàn)ListBox多選刪除時(shí),岳曉同學(xué)與老師的思路不同,同樣可以完成刪除。2006級(jí)岳曉同學(xué)的代碼:for(inti=0;i<ListBox1.Items.Count;i++)if(ListBox1.Items[i].Selected){Response.Write(i+"<br>");ListBox1.Items.RemoveAt(i);i=i-1;//此處做了改進(jìn)}六、參考資料《ASP.NET數(shù)據(jù)庫(kù)開發(fā)入門與提高》(清華大學(xué)出版社)《VisualC#2005編程實(shí)例精粹》(中國(guó)水利水電出版社)《VisualC#.NET可視化程序設(shè)計(jì)》(清華大學(xué)出版社)《ASP.NET動(dòng)態(tài)網(wǎng)站開發(fā)基礎(chǔ)教程(C#篇)》(清華大學(xué)出版社)
授課題目第3章驗(yàn)證控件授課類型理論課+實(shí)驗(yàn)課教學(xué)方法講授、實(shí)例驅(qū)動(dòng)教學(xué)手段多媒體教學(xué)授課時(shí)間學(xué)時(shí)分配5教學(xué)目的掌握表單驗(yàn)證控件、比較驗(yàn)證控件、范圍驗(yàn)證控件、正則驗(yàn)證控件、自定義邏輯驗(yàn)證控件、驗(yàn)證組控件的使用。教學(xué)重點(diǎn)框架知識(shí)頁(yè)面創(chuàng)建網(wǎng)站包括的基本要素教學(xué)難點(diǎn)框架知識(shí)其它教學(xué)基本內(nèi)容備注ASP.NET提供了強(qiáng)大的驗(yàn)證控件,它可以驗(yàn)證服務(wù)器控件中用戶的輸入,并在驗(yàn)證失敗的情況下顯示一條自定義錯(cuò)誤消息。驗(yàn)證控件直接在客戶端執(zhí)行,用戶提交后執(zhí)行相應(yīng)的驗(yàn)證無(wú)需使用服務(wù)器端進(jìn)行驗(yàn)證操作,從而減少了服務(wù)器與客戶端之間的往返過(guò)程。3.1表單驗(yàn)證控件(RequiredFieldValidator)在實(shí)際的應(yīng)用中,如在用戶填寫表單時(shí),有一些項(xiàng)目是必填項(xiàng),例如用戶名和密碼。在傳統(tǒng)的ASP中,當(dāng)用戶填寫表單后,頁(yè)面需要被發(fā)送到服務(wù)器并判斷表單中的某項(xiàng)HTML控件的值是否為空,如果為空,則返回錯(cuò)誤信息。在ASP.NET中,系統(tǒng)提供了RequiredFieldValidator驗(yàn)證控件進(jìn)行驗(yàn)證。使用RequiredFieldValidator控件能夠指定某個(gè)用戶在特定的控件中必須提供相應(yīng)的信息,如果不填寫相應(yīng)的信息,RequiredFieldValidator控件就會(huì)提示錯(cuò)誤信息,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>在進(jìn)行驗(yàn)證時(shí),RequiredFieldValidator控件必須綁定一個(gè)服務(wù)器控件,在上述代碼中,驗(yàn)證控件RequiredFieldValidator控件的服務(wù)器控件綁定為TextBox1,當(dāng)TextBox1中的值為空時(shí),則會(huì)提示自定義錯(cuò)誤信息“必填字段不能為空”,如圖3-53所示。圖3-53RequiredFieldValidator驗(yàn)證控件當(dāng)姓名選項(xiàng)未填寫時(shí),會(huì)提示必填字段不能為空,并且該驗(yàn)證在客戶端執(zhí)行。當(dāng)發(fā)生此錯(cuò)誤時(shí),用戶會(huì)立即看到該錯(cuò)誤提示而不會(huì)立即進(jìn)行頁(yè)面提交,當(dāng)用戶填寫完成并再次單擊按鈕控件時(shí),頁(yè)面才會(huì)向服務(wù)器提交。3.2比較驗(yàn)證控件(CompareValidator)比較驗(yàn)證控件對(duì)照特定的數(shù)據(jù)類型來(lái)驗(yàn)證用戶的輸入。因?yàn)楫?dāng)用戶輸入用戶信息時(shí),難免會(huì)輸入錯(cuò)誤信息,如當(dāng)需要了解用戶的生日時(shí),用戶很可能輸入了其他的字符串。CompareValidator比較驗(yàn)證控件能夠比較控件中的值是否符合開發(fā)人員的需要。CompareValidator控件的特有屬性如下所示:ControlToCompare:以字符串形式輸入的表達(dá)式。要與另一控件的值進(jìn)行比較。Operator:要使用的比較。Type:要比較兩個(gè)值的數(shù)據(jù)類型。ValueToCompare:以字符串形式輸入的表達(dá)式。當(dāng)使用CompareValidator控件時(shí),可以方便的判斷用戶是否正確輸入,示例代碼如下所示。<body><formid="form1"runat="server"><div>請(qǐng)輸入生日:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><br/>畢業(yè)日期:<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox><asp:CompareValidatorID="CompareValidator1"runat="server"ControlToCompare="TextBox2"ControlToValidate="TextBox1"CultureInvariantValues="True"ErrorMessage="輸入格式錯(cuò)誤!請(qǐng)改正!"Operator="GreaterThan"Type="Date"></asp:CompareValidator><br/><asp:ButtonID="Button1"runat="server"Text="Button"/><br/></div></form></body>上述代碼判斷TextBox1的輸入的格式是否正確,當(dāng)輸入的格式錯(cuò)誤時(shí),會(huì)提示錯(cuò)誤,如圖3-54所示。圖3-54CompareValidator驗(yàn)證控件CompareValidator驗(yàn)證控件不僅能夠驗(yàn)證輸入的格式是否正確,還可以驗(yàn)證兩個(gè)控件之間的值是否相等。如果兩個(gè)控件之間的值不相等,CompareValidator驗(yàn)證控件同樣會(huì)將自定義錯(cuò)誤信息呈現(xiàn)在用戶的客戶端瀏覽器中。3.3范圍驗(yàn)證控件(RangeValidator)范圍驗(yàn)證控件(RangeValidator)可以檢查用戶的輸入是否在指定的上限與下限之間。通常情況下用于檢查數(shù)字、日期、貨幣等。范圍驗(yàn)證控件(RangeValidator)控件的常用屬性如下所示。MinimumValue:指定有效范圍的最小值。MaximumValue:指定有效范圍的最大值。Type:指定要比較的值的數(shù)據(jù)類型。通常情況下,為了控制用戶輸入的范圍,可以使用該控件。當(dāng)輸入用戶的生日時(shí),今年是2011年,那么用戶就不應(yīng)該輸入2012年,同樣基本上沒(méi)有人的壽命會(huì)超過(guò)100,所以對(duì)輸入的日期的下限也需要進(jìn)行規(guī)定,示例代碼如下所示。<div>請(qǐng)輸入生日:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><asp:RangeValidatorID="RangeValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="超出規(guī)定范圍,請(qǐng)重新填寫"MaximumValue="2012/1/1"MinimumValue="1912/1/1"Type="Date"></asp:RangeValidator><br/><asp:ButtonID="Button1"runat="server"Text="Button"/></div>上述代碼將MinimumValue屬性值設(shè)置為1912/1/1,并能將MaximumValue的值設(shè)置為2012/1/1,當(dāng)用戶的日期低于最小值或高于最高值時(shí),則提示錯(cuò)誤,如圖3-55所示。圖3-55RangeValidator驗(yàn)證控件注意:RangeValidator驗(yàn)證控件在進(jìn)行控件的值的范圍的設(shè)定時(shí),其范圍不僅僅可以是一個(gè)整數(shù)值,同樣還能夠是時(shí)間、日期等值。3.4正則驗(yàn)證控件(RegularExpressionValidator)在上述控件中,雖然能夠?qū)崿F(xiàn)一些驗(yàn)證,但是驗(yàn)證的能力是有限的,例如在驗(yàn)證的過(guò)程中,只能驗(yàn)證是否是數(shù)字,或者是否是日期。也可能在驗(yàn)證時(shí),只能驗(yàn)證一定范圍內(nèi)的數(shù)值,雖然這些控件提供了一些驗(yàn)證功能,但卻限制了開發(fā)人員進(jìn)行自定義驗(yàn)證和錯(cuò)誤信息的開發(fā)。為實(shí)現(xiàn)一個(gè)驗(yàn)證,很可能需要多個(gè)控件同時(shí)搭配使用。正則驗(yàn)證控件(RegularExpressionValidator)就解決了這個(gè)問(wèn)題,正則驗(yàn)證控件的功能非常的強(qiáng)大,它用于確定輸入的控件的值是否與某個(gè)正則表達(dá)式所定義的模式相匹配,如電子郵件、電話號(hào)碼以及序列號(hào)等。正則驗(yàn)證控件(RegularExpressionValidator)常用的屬性是ValidationExpression,它用來(lái)指定用于驗(yàn)證的輸入控件的正則表達(dá)式。客戶端的正則表達(dá)式驗(yàn)證語(yǔ)法和服務(wù)端的正則表達(dá)式驗(yàn)證語(yǔ)法不同,因?yàn)樵诳蛻舳耸褂玫氖荍Sript正則表達(dá)式語(yǔ)法,而在服務(wù)器端使用的是Regex類提供的正則表達(dá)式語(yǔ)法。使用正則表達(dá)式能夠?qū)崿F(xiàn)強(qiáng)大字符串的匹配并驗(yàn)證用戶的輸入的格式是否正確,系統(tǒng)提供了一些常用的正則表達(dá)式,開發(fā)人員能夠選擇相應(yīng)的選項(xiàng)進(jìn)行規(guī)則篩選,如圖3-56所示。圖3-56系統(tǒng)提供的正則表達(dá)式當(dāng)選擇了正則表達(dá)式后,系統(tǒng)自動(dòng)生成的HTML代碼如下所示。<asp:RegularExpressionValidatorID="RegularExpressionValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="正則不匹配,請(qǐng)重新輸入!"ValidationExpression="\d{17}[\d|X]|\d{15}"></asp:RegularExpressionValidator>運(yùn)行后當(dāng)用戶單擊按鈕控件時(shí),如果輸入的信息與相應(yīng)的正則表達(dá)式不匹配,則會(huì)提示錯(cuò)誤信息,如圖3-57所示。圖3-57RegularExpressionValidator驗(yàn)證控件同樣,開發(fā)人員也可以自定義正則表達(dá)式來(lái)規(guī)范用戶的輸入。使用正則表達(dá)式能夠加快驗(yàn)證速度并在字符串中快速匹配,而另一方面,使用正則表達(dá)式能夠減少?gòu)?fù)雜的應(yīng)用程序的功能開發(fā)和實(shí)現(xiàn)。注意:在用戶輸入為空時(shí),其他的驗(yàn)證控件都會(huì)驗(yàn)證通過(guò)。所以,在驗(yàn)證控件的使用中,通常需要同表單驗(yàn)證控件(RequiredFieldValidator)一起使用。3.5自定義邏輯驗(yàn)證控件(CustomValidator)自定義邏輯驗(yàn)證控件(CustomValidator)允許使用自定義的驗(yàn)證邏輯創(chuàng)建驗(yàn)證控件。例如,可以創(chuàng)建一個(gè)驗(yàn)證控件判斷用戶輸入的是否包含“.”號(hào),示例代碼如下所示。protectedvoidCustomValidator1_ServerValidate(objectsource,ServerValidateEventArgsargs){args.IsValid=args.Value.ToString().Contains("."); //設(shè)置驗(yàn)證程序,并返回布爾值}protectedvoidButton1_Click(objectsender,EventArgse) //用戶自定義驗(yàn)證{if(Page.IsValid) //判斷是否驗(yàn)證通過(guò){Label1.Text="驗(yàn)證通過(guò)"; //輸出驗(yàn)證通過(guò)}else{Label1.Text="輸入格式錯(cuò)誤"; //提交失敗信息}}上述代碼不僅使用了驗(yàn)證控件自身的驗(yàn)證,也使用了用戶自定義驗(yàn)證,運(yùn)行結(jié)果如圖3-58所示。圖3-58CustomValidator驗(yàn)證控件從CustomValidator驗(yàn)證控件的驗(yàn)證代碼可以看出,CustomValidator驗(yàn)證控件可以在服務(wù)器上執(zhí)行驗(yàn)證檢查。如果要?jiǎng)?chuàng)建服務(wù)器端的驗(yàn)證函數(shù),則處理CustomValidator控件的ServerValidate事件。使用傳入的ServerValidateEventArgs的對(duì)象的IsValid字段來(lái)設(shè)置是否通過(guò)驗(yàn)證。而CustomValidator控件同樣也可以在客戶端實(shí)現(xiàn),該驗(yàn)證函數(shù)可用VBScript或Jscript來(lái)實(shí)現(xiàn),而在CustomValidator控件中需要使用ClientValidationFunction屬性指定與CustomValidator控件相關(guān)的客戶端驗(yàn)證腳本的函數(shù)名稱進(jìn)行控件中的值的驗(yàn)證。3.6驗(yàn)證組控件(ValidationSummary)驗(yàn)證組控件(ValidationSummary)能夠?qū)ν豁?yè)面的多個(gè)控件進(jìn)行驗(yàn)證。同時(shí),驗(yàn)證組控件(ValidationSummary)通過(guò)ErrorMessage屬性為頁(yè)面上的每個(gè)驗(yàn)證控件顯式錯(cuò)誤信息。驗(yàn)證組控件(ValidationSummary)的常用屬性如下所示。DisplayMode:摘要可顯示為列表,項(xiàng)目符號(hào)列表或單個(gè)段落。HeaderText:標(biāo)題部分指定一個(gè)自定義標(biāo)題。ShowMessageBox:是否在消息框中顯示摘要。ShowSummary:控制是顯示還是隱藏ValidationSummary控件。驗(yàn)證控件能夠顯示頁(yè)面的多個(gè)控件產(chǎn)生的錯(cuò)誤,示例代碼如下所示。<body><formid="form1"runat="server"><div>姓名:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="姓名為必填項(xiàng)"></asp:RequiredFieldValidator><br/>身份證:<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox><asp:RegularExpressionValidatorID="RegularExpressionValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="身份證號(hào)碼錯(cuò)誤"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>運(yùn)行結(jié)果如圖3-59所示。圖3-59ValidationSummary驗(yàn)證控件當(dāng)有多個(gè)錯(cuò)誤發(fā)生時(shí),ValidationSummary控件能夠捕獲多個(gè)驗(yàn)證錯(cuò)誤并呈現(xiàn)給用戶,這樣就避免了一個(gè)表單需要多個(gè)驗(yàn)證時(shí)需要使用多個(gè)驗(yàn)證控件進(jìn)行綁定,使用ValidationSummary控件就無(wú)需為每個(gè)需要驗(yàn)證的控件進(jìn)行綁定。
授課題目第4章常用的內(nèi)置對(duì)象授課類型理論課+實(shí)驗(yàn)課教學(xué)方法講授、實(shí)例驅(qū)動(dòng)教學(xué)手段多媒體教學(xué)授課時(shí)間學(xué)時(shí)分配10教學(xué)目的通過(guò)本次課程的學(xué)習(xí),主要掌握以下內(nèi)置對(duì)象的用法:5.1Response對(duì)象5.2Server對(duì)象5.3Session對(duì)象5.4Application對(duì)象5.5Request對(duì)象教學(xué)重點(diǎn)Response對(duì)象Server對(duì)象Session對(duì)象Request對(duì)象教學(xué)難點(diǎn)Session對(duì)象其它教學(xué)基本內(nèi)容備注一、新課導(dǎo)入面向?qū)ο蟪绦蛟O(shè)計(jì)時(shí)我們已經(jīng)講過(guò),類成員分為對(duì)象成員和類成員,類成員可以不用定義對(duì)象直接用類名調(diào)用即可。ASP.NET中提供了5中常用的內(nèi)置對(duì)象,直接通過(guò)類名就可以調(diào)用相關(guān)的屬性和方法,實(shí)際應(yīng)用非常廣泛。二、授課內(nèi)容提要第4章服務(wù)器控件4.1Response對(duì)象1.作用頁(yè)面輸出內(nèi)容和跳轉(zhuǎn)導(dǎo)航2.重要屬性BufferOutPut屬性
是否使用緩存Write()向客戶端發(fā)送字符串信息Clear()清除緩存Flush()
強(qiáng)制輸出緩存的所有數(shù)據(jù)Redirect()網(wǎng)頁(yè)轉(zhuǎn)向地址End()終止當(dāng)前頁(yè)的運(yùn)行
WriteFile()讀取一個(gè)文件,并且寫入客戶端輸出流3.例子(1)Response.Write變量數(shù)據(jù)或字符串Response.Write(變量數(shù)據(jù)或字符串)(2)Response對(duì)象的Redirect方法將客戶端瀏覽器直接重定向到另外的URL上,即跳轉(zhuǎn)到另一個(gè)網(wǎng)頁(yè)。例如:Response.Redirect("/")Response對(duì)象練習(xí)Response彈出新頁(yè)面,如何實(shí)現(xiàn)?寫法一:Response.Write("<script>window.open('WebForm2.aspx')</script>")
寫法二:Response.Write("<script>window.open(\"login.aspx\")</script>");4.2Server對(duì)象1.作用Server對(duì)象獲取路徑2.重要屬性MachineName:獲取服務(wù)器的計(jì)算機(jī)名稱。
ScriptTimeout:獲取和設(shè)置請(qǐng)求超時(shí)(以秒計(jì))。CreateObject()創(chuàng)建COM對(duì)象的一個(gè)服務(wù)器實(shí)例。Execute()執(zhí)行當(dāng)前服務(wù)器上的另一個(gè)aspx頁(yè),執(zhí)行完該頁(yè)后再返回本頁(yè)繼續(xù)執(zhí)行HtmlEncode()對(duì)要在瀏覽器中顯示的字符串進(jìn)行HTML編碼并返回已編碼的字符串。HtmlDecode()對(duì)HTML編碼的字符串進(jìn)行解碼,并返回已解碼的字符串。MapPath()返回與Web服務(wù)器上的指定虛擬路徑相對(duì)應(yīng)的物理文件路徑。Transfer()終止當(dāng)前頁(yè)的執(zhí)行,并為當(dāng)前請(qǐng)求開始執(zhí)行新頁(yè)。UrlEncode()將代表URL的字符串進(jìn)行編碼,以便通過(guò)URL從Web服務(wù)器到客戶端進(jìn)行可靠的HTTP傳輸。UrlDecode()對(duì)已被編碼的URL字符串進(jìn)行解碼,并返回已解碼的字符串。UrlPathEncode()對(duì)URL字符串的路徑部分進(jìn)行URL編碼,并返回已編碼的字符串。3.例子Server對(duì)象練習(xí)1、Server對(duì)象顯示當(dāng)前程序在服務(wù)器上的物理路徑,如何實(shí)現(xiàn)?參考答案:Response.Write(Server.MapPath(""));2、Server對(duì)象顯示某個(gè)相對(duì)的文件夾的物理路徑,如何實(shí)現(xiàn)?參考答案1:Response.Write(Server.MapPath("data"));3、有沒(méi)有其他方法實(shí)現(xiàn)問(wèn)題2?參考答案:Response.Write(Server.MapPath("")+"\\data");4、Server對(duì)象顯示文件在服務(wù)器上的全路徑,如何實(shí)現(xiàn)?參考答案:Response.Write(Server.MapPath("login.aspx"));4.3Session對(duì)象1.作用Session對(duì)象實(shí)現(xiàn)頁(yè)面間傳遞參數(shù)2.重要屬性和方法Count獲取會(huì)話狀態(tài)集合中Session對(duì)象的個(gè)數(shù)Session對(duì)象的個(gè)數(shù)TimeOut獲取并設(shè)置在會(huì)話狀態(tài)提供程序終止會(huì)話之前各請(qǐng)求之間所允許的超時(shí)期限超時(shí)期限(以分鐘為單位)SessionID獲取用于標(biāo)識(shí)會(huì)話的唯一會(huì)話ID會(huì)話IDAdd新增一個(gè)Session對(duì)象Clear清除會(huì)話狀態(tài)中的所有值Remove刪除會(huì)話狀態(tài)集合中的項(xiàng)RemoveAll清除所有會(huì)話狀態(tài)值3.例子對(duì)于一個(gè)Web應(yīng)用程序而言,所有用戶訪問(wèn)到的Application對(duì)象的內(nèi)容是完全一樣的;而不同用戶會(huì)話訪問(wèn)到的Session對(duì)象的內(nèi)容則各不相同。
Session可以保存變量,該變量只能供一個(gè)用戶使用,也就是說(shuō),每一個(gè)網(wǎng)頁(yè)瀏覽者都有自己的Session對(duì)象變量,即Session對(duì)象具有唯一性。Session提供了一種頁(yè)面之間傳遞參數(shù)的方法。(1)將新的項(xiàng)添加到會(huì)話狀態(tài)中(一般在登錄頁(yè)面使用)語(yǔ)法格式為:Session("鍵名")=值或者Session.Add("鍵名",值)(2)按名稱獲取會(huì)話狀態(tài)中的值(一般在主頁(yè)面使用)語(yǔ)法格式為:變量=Session("鍵名")
或者
變量=Session.Item("鍵名")(3)刪除會(huì)話狀態(tài)集合中的項(xiàng)語(yǔ)法格式為:
Session.Remove("鍵名")(4)清除會(huì)話狀態(tài)中的所有值語(yǔ)法格式為:
Session.RemoveAll()或者
Session.Clear()(5)取消當(dāng)前會(huì)話語(yǔ)法格式為:
Session.Abandon()(6)設(shè)置會(huì)話狀態(tài)的超時(shí)期限,以分鐘為單位。語(yǔ)法格式為:
Session.TimeOut=數(shù)值Session實(shí)現(xiàn)頁(yè)面之間傳遞變量功能:1、在第一個(gè)頁(yè)面(Session1.aspx)輸入用戶名和密碼,如果錯(cuò)誤提示“用戶名或密碼錯(cuò)誤”對(duì)話框,否則轉(zhuǎn)到另一個(gè)頁(yè)面(Session2.aspx),并在第二個(gè)頁(yè)面顯示用戶名和密碼。2、如果用戶沒(méi)用登錄,則不能直接進(jìn)入第二個(gè)頁(yè)面(Session2.aspx),而是返回到第一個(gè)登錄頁(yè)面。參考代碼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('用戶名或密碼錯(cuò)誤')</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對(duì)象1.作用Application對(duì)象全局變量共享,網(wǎng)站計(jì)數(shù)2.重要屬性和事件Application對(duì)象的屬性AllKeys獲取HttpApplicationState集合中的訪問(wèn)鍵HttpApplicationState對(duì)象名的字符串?dāng)?shù)組Count獲取HttpApplicationState集合中的對(duì)象數(shù)集合中的Item對(duì)象數(shù)。默認(rèn)為0Application對(duì)象的方法Add新增一個(gè)新的Application對(duì)象變量Clear清除全部的Application對(duì)象變量Get使用索引關(guān)鍵字或變數(shù)名稱得到變量值GetKey使用索引關(guān)鍵字來(lái)獲取變量名稱Lock鎖定全部的Application變量Remove使用變量名稱刪除一個(gè)Application對(duì)象RemoveAll刪除全部的Application對(duì)象變量Set使用變量名更新一個(gè)Application對(duì)象變量的內(nèi)容UnLock解除鎖定的Application變量Application對(duì)象的事件Session_OnStartSession_OnEndApplication_StartApplication_EndApplication_Error3.理論介紹Application對(duì)象是HttpApplicationState類的一個(gè)實(shí)例,定義ASP.NET應(yīng)用程序中的所有應(yīng)用程序?qū)ο笸ㄓ玫姆椒ā傩院褪录pplication的原理是在服務(wù)器端建立一個(gè)狀態(tài)變量,來(lái)存儲(chǔ)所需的信息。要注意的是,首先,這個(gè)狀態(tài)變量是建立在內(nèi)存中的,其次是這個(gè)狀態(tài)變量是可以被網(wǎng)站的所有頁(yè)面訪問(wèn)的。4.例子Application實(shí)現(xiàn)計(jì)數(shù)器添加Global.asax文件網(wǎng)站→添加新項(xiàng)→全局應(yīng)用程序類Global.asax文件的Application_Start事件中寫代碼如下:Application實(shí)現(xiàn)計(jì)數(shù)器voidApplication_Start(objectsender,EventArgse){Application["counter"]=0;}創(chuàng)建一個(gè)頁(yè)面counter.aspx,然后添加一個(gè)Label,在頁(yè)面的Page_Load寫如下代碼:protectedvoidPage_Load(objectsender,EventArgse){Application["counter"]=Convert.ToInt32(Application["counter"])+1;Label1.Text="您是本網(wǎng)站的第"+Application["counter"].ToString()+"位訪問(wèn)者";}Application實(shí)現(xiàn)防刷新計(jì)數(shù)器(1)網(wǎng)站->添加新項(xiàng)->選“文本文件”,文件名為“Site_Counter”,在文件中寫入一個(gè)“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實(shí)現(xiàn)防刷新計(jì)數(shù)器(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實(shí)現(xiàn)防刷新計(jì)數(shù)器(3)創(chuàng)建一個(gè)頁(yè)面counter.aspx,然后添加一個(gè)Label,在頁(yè)面的Page_Load寫如下代碼:protectedvoidPage_Load(objectsender,EventArgse){Label1.Text="您是本網(wǎng)站的第"+Application["Site_Counter"].ToString()+"位訪問(wèn)者";}4.5Request對(duì)象1.作用Request對(duì)象傳遞參數(shù)和獲取信息2.重要屬性QueryString獲取HTTP查詢字符串變量集合NameValueCollection對(duì)象Path獲取當(dāng)前請(qǐng)求的虛擬路徑當(dāng)前請(qǐng)求的虛擬路徑UserHostAddress獲取遠(yuǎn)程客戶端的IP主機(jī)地址遠(yuǎn)程客戶端的IP地址Browser獲取有關(guān)正在請(qǐng)求的客戶端的瀏覽器功能的信息HttpBrowserCapabilities對(duì)象BinaryRead執(zhí)行對(duì)當(dāng)前輸入流進(jìn)行指定字節(jié)數(shù)的二進(jìn)制讀取MapPath為當(dāng)前請(qǐng)求將請(qǐng)求的URL中的虛擬路徑映射到服務(wù)器上的物理路徑3.例子在服務(wù)器上創(chuàng)建并向客戶端輸出Cookie可以利用Response對(duì)象實(shí)現(xiàn)。
Response對(duì)象支持一個(gè)名為Cookies的集合,可以將Cookie對(duì)象添加到該集合中,從而向客戶端輸出Cookie。
通過(guò)Request對(duì)象的Cookies集合來(lái)訪問(wèn)CookieCookie的例子(1)添加兩個(gè)按鈕,如圖所示。添加Cookie的按鈕編程如下:protectedvoidButton1_Click(objectsender,EventArgse){HttpCookiecookie=newHttpCookie("MyCook");//初使化并設(shè)置Cookie的名稱DateTimedt=DateTime.Now;TimeSpants=newTimeSpan(0,0,1,0,0);//過(guò)期時(shí)間為1分鐘cookie.Expires=dt.Add(ts);//設(shè)置過(guò)期時(shí)間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不存在!");}}您可以通過(guò)多種方法把Cookie添加到Response.Cookies集合中。以下示例介紹了兩種完成此任務(wù)的方法: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)三、小結(jié)1.5種內(nèi)置控件主要用到它們的屬性和方法,可以實(shí)現(xiàn)很多輔助功能,它們都是不可見的(確切地說(shuō),它們?cè)O(shè)置算不上控件)。2.通過(guò)例子和對(duì)比才能對(duì)控件了解更深刻。四、作業(yè)說(shuō)出常見的內(nèi)置控件的類型和它們的作用。五、教學(xué)后記1.內(nèi)置對(duì)象的作用:實(shí)現(xiàn)幕后的操縱。2.登山式和堆積木式授課方式:從簡(jiǎn)單到復(fù)雜,堆積木式的教學(xué)效果更好。3.逆向思維教學(xué)法:首先講解實(shí)例,通過(guò)實(shí)驗(yàn)讓學(xué)生自己總結(jié)屬性、方法的作用。六、參考資料《ASP.NET數(shù)據(jù)庫(kù)開發(fā)入門與提高》(清華大學(xué)出版社)《VisualC#2005編程實(shí)例精粹》(中國(guó)水利水電出版社)《VisualC#.NET可視化程序設(shè)計(jì)》(清華大學(xué)出版社)《ASP.NET動(dòng)態(tài)網(wǎng)站開發(fā)基礎(chǔ)教程(C#篇)》(清華大學(xué)出版社)
授課題目第6章皮膚、主題和母版頁(yè)授課類型理論課+實(shí)驗(yàn)課教學(xué)方法講授、實(shí)例驅(qū)動(dòng)教學(xué)手段多媒體教學(xué)授課時(shí)間學(xué)時(shí)分配10教學(xué)目的掌握皮膚的應(yīng)用、主題和母版頁(yè)的使用。教學(xué)重點(diǎn)母版頁(yè)的設(shè)計(jì)教學(xué)難點(diǎn)母版頁(yè)的設(shè)計(jì)其它教學(xué)基本內(nèi)容備注使用系統(tǒng)默認(rèn)母版完成客戶界面設(shè)計(jì)。在Web應(yīng)用程序開發(fā)中,一個(gè)良好的Web應(yīng)用程序界面能夠讓網(wǎng)站的訪問(wèn)者耳目一新,當(dāng)用戶訪問(wèn)Web應(yīng)用時(shí),網(wǎng)站的界面和布局能夠提升訪問(wèn)者對(duì)網(wǎng)站的興趣和繼續(xù)瀏覽的耐心。ASP.NET提供了皮膚、主題和模板頁(yè)的功能增強(qiáng)了網(wǎng)頁(yè)布局和界面優(yōu)化的功能,這樣即可輕松的實(shí)現(xiàn)對(duì)網(wǎng)站開發(fā)中界面的控制。6.1皮膚和主題皮膚和主題是自ASP.NET2.0就包括的內(nèi)容,使用皮膚和主題,能夠?qū)邮胶筒季中畔⒎纸獾絾为?dú)的文件中,讓布局代碼和頁(yè)面代碼相分離。主題可以應(yīng)用到各個(gè)站點(diǎn),當(dāng)需要更改頁(yè)面主題時(shí),無(wú)需對(duì)每個(gè)頁(yè)面進(jìn)行更改,只需要針對(duì)主題代碼頁(yè)進(jìn)行更改即可。6.1.1CSS簡(jiǎn)介在任何Web應(yīng)用程序的開發(fā)過(guò)程中,CSS(CascadingStyleSheets,級(jí)聯(lián)樣式表)都是非常重要的頁(yè)面布局方法,而且CSS也是最高效的頁(yè)面布局方法。CSS發(fā)展于1994年10月,是為了補(bǔ)救HTML3.2語(yǔ)法中的不足,但是由于當(dāng)時(shí)網(wǎng)絡(luò)的發(fā)展的不足和瀏覽器的支持率較低,直到1996年底,才正式發(fā)表了CSS1.0規(guī)格,也正是1996年之后,瀏覽器才開始正式的支持CSS。在網(wǎng)頁(yè)布局中,CSS經(jīng)常被使用于頁(yè)面樣式布局和樣式控制。熟練的使用CSS能夠讓網(wǎng)頁(yè)布局更加的方便,在頁(yè)面維護(hù)時(shí),也能夠減少工作量。通常CSS能夠支持三種定義方式,一是直接將樣式控制放置于單個(gè)HTML元素內(nèi),稱為內(nèi)聯(lián)式;二是在網(wǎng)頁(yè)的head部分定義樣式,稱為嵌入式;三是以擴(kuò)展名為.css文件保存樣式,稱為外聯(lián)式。這三種樣式適用于不同的場(chǎng)合,內(nèi)聯(lián)式適用于對(duì)單個(gè)標(biāo)簽進(jìn)行樣式控制,這樣的好處就在于開發(fā)方便,而在維護(hù)時(shí),就需要針對(duì)每個(gè)頁(yè)面進(jìn)行修改,非常的不方便;而嵌入式可以控制一個(gè)網(wǎng)頁(yè)的多個(gè)樣式,當(dāng)需要對(duì)網(wǎng)頁(yè)樣式進(jìn)行修改時(shí),只需要修改head標(biāo)簽中的style標(biāo)簽即可,不過(guò)這樣仍然沒(méi)有讓布局代碼和頁(yè)面代碼完全分離;而外聯(lián)式能夠?qū)⒉季执a和頁(yè)面代碼相分離,在維護(hù)過(guò)程中,能夠減少工作量。6.1.2CSS基礎(chǔ)CSS能夠通過(guò)編寫樣式控制代碼來(lái)進(jìn)行頁(yè)面布局,在編寫相應(yīng)的HTML標(biāo)簽時(shí),可以通過(guò)Style屬性進(jìn)行CSS樣式控制,示例代碼如下所示。<body><divstyle="font-size:14px;">這是一段文字</div></body>上述代碼使用內(nèi)聯(lián)式進(jìn)行樣式控制,并將屬性設(shè)置為font-size:14px,其意義就在于定義文字的大小為14px;同樣,如果需要定義多個(gè)屬性時(shí),可以同寫在一個(gè)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>上述代碼分別定義了相關(guān)屬性來(lái)控制樣式,并且都使用內(nèi)聯(lián)式定義樣式,這些CSS的屬性的意義如下所示:字體名稱屬性(font-family):該屬性設(shè)定字體名稱,如Arial,、Tahoma,、Courier等,可以定義字體的名稱。字體大小屬性(font-size):該屬性可以設(shè)置字體的大小。字體大小的設(shè)置可以有多種方式,最常用的就是pt和px。該屬性有三個(gè)值可選:normal,、italic、oblique、normal是默認(rèn)值,italic、oblique都是斜體顯示。字體粗細(xì)屬性(font-weight):該屬性常用值是normal和bold,normal是默認(rèn)值,bold是粗體。字體變量屬性(font-variant):該屬性有兩個(gè)值normal和small-caps,normal是默認(rèn)值。small-caps表示字體將被顯示成大寫。字體屬性(font):該屬性是各種字體屬性的一種快捷的綜合寫法。字體顏色(color):該屬性用來(lái)控制字體顏色。這些屬性分別定義了字體屬性,如圖7-1所示。圖7-1CSS樣式控制用內(nèi)聯(lián)式的方法進(jìn)行樣式控制固然簡(jiǎn)單,但是在維護(hù)過(guò)程中卻是非常的復(fù)雜和難以控制。當(dāng)需要對(duì)頁(yè)面中的布局進(jìn)行更改時(shí),則需要對(duì)每個(gè)頁(yè)面的每個(gè)標(biāo)簽的樣式進(jìn)行更改,這樣無(wú)疑增大的工作量,當(dāng)需要對(duì)頁(yè)面進(jìn)行布局時(shí),可以使用嵌入式的方法進(jìn)行頁(yè)面布局,示例代碼如下所示。<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種字體樣式,這些樣式都是通過(guò)“.”號(hào)加樣式名稱定義的,在定義了字體樣式后,就可以在相應(yīng)的標(biāo)簽中使用class屬性來(lái)定義樣式,示例代碼如下所示。<body><divclass="font1">這是一段文字1</div><divclass="font2">這是一段文字2</div><divclass="font3">這是一段文字3</div><divclass="font4">ThisisMyFirstCSScode</div><divclass="font5">這是一段文字5</div></body>其運(yùn)行后的結(jié)果依然同11-12所示,但是這樣編寫代碼在維護(hù)起來(lái)更加的方便,只需要找到head中的style標(biāo)簽,就可以對(duì)樣式進(jìn)行全局控制。雖然嵌入式能夠解決單個(gè)頁(yè)面的樣式問(wèn)題,但是這樣只能針對(duì)單個(gè)頁(yè)面進(jìn)行樣式控制,而在很多網(wǎng)站的開發(fā)應(yīng)用中,大量的頁(yè)面樣式基本相同,只有少數(shù)的頁(yè)面不盡相同,所以使用嵌入式還是有不足,這里就可以使用外聯(lián)式。使用外聯(lián)式,必須創(chuàng)建一個(gè).css文件后綴的文件,并在當(dāng)前頁(yè)面中添加引用,.css頁(yè)面代碼如下所示。.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標(biāo)簽中的style標(biāo)簽的內(nèi)容即可,其編寫方法也與內(nèi)聯(lián)式和內(nèi)嵌式相同。在編寫完成CSS文件后,需要在使用的頁(yè)面的head標(biāo)簽中添加引用,示例代碼如下所示。<linkhref="css.css"type="text/css"rel="stylesheet"></link>上述代碼添加了一個(gè)css.css文件的引用,意在告訴瀏覽器當(dāng)前頁(yè)面的一些樣式可以在css.css中找到并解析。在使用了外聯(lián)式后,當(dāng)前頁(yè)面的HTML代碼就能夠變得簡(jiǎn)單和整潔,示例代碼如下所示。<htmlxmlns="/1999/xhtml"><head><metacontent="text/html;charset=utf-8"http-equiv="Content-Type"/><tit
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)無(wú)縫對(duì)焊三通市場(chǎng)調(diào)查研究報(bào)告
- 2025-2030年中國(guó)WLAN無(wú)線局域網(wǎng)設(shè)備市場(chǎng)發(fā)展策略與投資競(jìng)爭(zhēng)戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)互聯(lián)網(wǎng)金融對(duì)銀行市場(chǎng)深度調(diào)研及投資規(guī)劃研究報(bào)告
- 2025年中國(guó)電工級(jí)環(huán)氧模塑料市場(chǎng)調(diào)查研究報(bào)告
- 襄陽(yáng)汽車職業(yè)技術(shù)學(xué)院《電腦建模技法》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025-2030年中國(guó)PET再生料行業(yè)市場(chǎng)運(yùn)營(yíng)狀況與發(fā)展?jié)摿ρ芯繄?bào)告
- 2025-2030年中國(guó)IC、卡智能卡行業(yè)投資價(jià)值研究報(bào)告
- 新疆天山職業(yè)技術(shù)大學(xué)《生物信息學(xué)應(yīng)用實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025-2030年中國(guó)LED微型投影機(jī)行業(yè)市場(chǎng)調(diào)查與投資咨詢研究報(bào)告
- 新疆應(yīng)用職業(yè)技術(shù)學(xué)院《高等數(shù)學(xué)C(下)》2023-2024學(xué)年第一學(xué)期期末試卷
- 美世國(guó)際職位評(píng)估體系IPE3.0使用手冊(cè)
- 焦慮抑郁患者護(hù)理課件
- 戶外招牌安全承諾書
- JGT471-2015 建筑門窗幕墻用中空玻璃彈性密封膠
- (完整word版)勞動(dòng)合同書(電子版)
- 施工單位現(xiàn)場(chǎng)動(dòng)火證
- 讀萬(wàn)卷書 行萬(wàn)里路 辯論賽過(guò)程
- 回流爐操作作業(yè)指導(dǎo)書
- 棋牌興趣小組申請(qǐng)表
- 分公司變更登記申請(qǐng)書(樣表)
- 中國(guó)話劇史(本二·下)
評(píng)論
0/150
提交評(píng)論