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

提交评论