Web程序设计课后题答案_第1页
Web程序设计课后题答案_第2页
Web程序设计课后题答案_第3页
Web程序设计课后题答案_第4页
Web程序设计课后题答案_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ASP.NETWeb程序设计习题及练习答案第1章习题及练习1.简答题1)什么是MSDN,它包含哪些功能?答案:MSDN(MicrosoftDeveloperNetwork)是Microsoft公司面向软件开发者的一种信息服务。MSDN实际上是一个以VisualStudio和Windows平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDNWebCast、及CMP合作的MSDN杂志等等一系列服务。2)VisualStudio内置服务器的作用是什么?答案:VisualStudio开发服务器是在Windows操作系统(包括HomeEdition版本)上本地运行的Web服务器。及IISExpress一样,它是专门构建用于在本地计算机上运行ASP.NET的。它不会处理针对其他计算机的请求。此外,它也不会提供应用程序范围外的文件。VisualStudio开发服务器是一种方法,可用于在向运行IIS的生产服务器发布网站或应用程序之前在本地进行测试。3)VisualStudio2012开发环境中主要包含哪些窗口?答案:工具栏。提供用于格式化文本、查找文本等的命令。一些工具栏只有在“设计”视图下才可用。“解决方案资源管理器”窗口。显示网站中的文件和文件夹。“文档”窗口。显示在视图选项卡窗口中处理的文档。单击选项卡可以实现在文档间切换。“属性”窗口。允许您更改页、HTML元素、控件及其他对象的设置。视图选项卡。展示同一文档的不同视图。

“设计”视图是一种近似WYSIWYG的编辑界面。

“源”视图是页的HTML编辑器。

“拆分”视图可同时显示文档的“设计”视图和“源”视图。如果要在“设计”视图中打开网页,需在“工具”菜单上,单击“选项”,选择“HTML设计器”节点,然后更改“起始页位置”选项。工具箱。提供可以拖到页上的控件和HTML元素。

“工具箱”元素按常用功能分组。服务器资源管理器/数据库资源管理器。用于显示数据库连接。如果未显示“服务器资源管理器”,可以在“视图”菜单上单击“服务器资源管理器”或“数据库资源管理器”。4)编写ASP.NET应用程序的步骤是什么?答案:(1)创建一个新的ASP.NETWeb窗体页(2)将页面添加到网站(3)向页中添加静态文本(4)添加控件(5)对Button控件编程5)请对不同调试方法进行分析比较。答案:(1)使用调试器:启动默认浏览器并加载指定的起始页。在调试器中运行页可以逐行扫描代码,并利用其他分析工具和运行时信息来进行调试。如果VisualStudio发现关键文件已更改,它同样在启动包含指定起始页的浏览器之前生成项目。(2)不用调试器:允许以在开发工具上下文以外的一般运行状况运行代码,这样这些工具不会提供可用的运行时信息。如果VisualStudio发现关键文件已更改,将在启动包含指定起始页的浏览器之前生成项目。(3)在浏览器中查看:编译项目并打开从“解决方案资源管理器”中选择的Web页。项目被编译并在VisualStudio内的默认浏览器中运行。2.操作题请自定义你的集成开发环境,将所有文本的颜色改成红色。答案:(1)在菜单栏中,选择[工具]

→[选项]。(2)在[选项]列表中选择[环境]→[字体和颜色]。(3)在[项前景]列表中,选择“红色”,然后选择[确定]按钮。3.程序设计题创建一个指向目标文件夹“d:\CompiledSite”的IIS虚拟目录。答案:(1)打开“InternetInformationServices(IIS)管理器”对话框。(2)在“连接”窗格中,展开服务器名称,然后展开“站点”。(3)右击“默认网站”,然后选择“添加虚拟目录”。此时将出现“添加虚拟目录”对话框。(4)在“别名”框中,输入

CompiledWebSite。(5)在“物理路径”框中,输入d:\CompiledSite。单击“确定”。(6)在IIS管理器的“连接”窗格中,右击新的虚拟目录,然后选择“转换为应用程序”。此时将出现“添加应用程序”对话框。单击“确定”。第2章习题及练习选择题。(1)-(5)BCBCD(6)-(10)BACAD填空题。(1)<bodybgcolor=”gray”text=”red”>(2)超链接,加粗(3)<sup>(4)Name,Method,Post,Action(5)及历史清单有关的信息程序题。<html><head><title>图书分类表</title></head><body><tablewidth="250"bordercolor=redborder="1"cellpadding="0"cellspacing="0"><caption>图书分类表</caption><trbgcolor=cyan><th>类别</th> <th>书名</th> <th>价格</th></tr><tr><tdrowspan="2">计算机</td><tdbgcolor=cray>web程序设计</td><td>41</td></tr><tr><td>C#开发</td><td>29</td></tr><tr><td>文学</td><td>奋斗</td><td>35</td></tr><tr><tdcolspan="3"align="right">日期:2013-03-08</td></tr></table></body></html>第3章习题及练习一、判断题1.(对)2.(对)3.(错)4.(错)5.(错)二、选择题ADADCAADDCABCCBCADDDABDBDBCAA三、填空题(共6小题)1、(xhtml)2、div是块元素,span是行内或内联元素3、color:#666;5、(xhtml或xml,css)第4章习题及练习一选择题CDABCD二填空题(1)<%@Master%>、ContentPlaceHolder(2)App_Theme、服务器控件(3)外观文件、.CSS文件、图像和其他资源(4)页面指令级、应用程序级、文件夹级(5)FindControl()方法和MasterType指令(6)SkinID三简答题(1)答:母版页是指可以再同一站点的多个页面中共享使用的特殊网页。用户可以使用母版页建立一个通用的版面布局或者使用母版页在多个页面中显示一些公共的内容。引用母版页的Web窗体页面称为内容页。(2)答:内容页及普通的Web窗体页面有所不同,主要体现在:①在<%@Page……%>指令中增加了Title=""和MasterPageFile="~/MasterPage.master"两个指令。②在内容页中不包含<html>、<head>、<title>、<body>、<form>等Web元素,因为这些元素都被放置在母版页中。③在内容页中包含有若干个<asp:Content……>和</asp:Content>标记,而且内容页的所有元素都要包含在Content控件中。(3)答:同一类型控件的外观分为默认外观和命名外观两种:①默认外观:不设置控件的SkinID属性,它自动应用于同一类型的所有控件。在同一主题中针对同一类型的控件只能有一个默认外观。②命名外观:如果同一类型控件有不同于默认外观的属性设置时,可以通过设置控件的SkinID属性来解决。(4)答:①设计主题。②在内容页中设置StyleSheetTheme属性为引用的主题。例如主题名称为Theme1,则只需要在内容页中设置页面的StyleSheetTheme属性为“Theme1”四答:TextBoxtextbox=(TextBox)Master.FindControl("TextBox1");if(textbox!=null){textbox.Text="123456";}第5章习题及练习1.填空题1)TreeView控件,SiteMapPath控件,Menu控件2).sitemap3)引用另外一个sitemap文件4)静态菜单的菜单显示级别数为25)_blank6)DataSourceID2.操作题:主要步骤:新建一个名为Web.sitemap的XML站点地图文件,Web.sitemap页面中修改并添加代码:<xmlversion="1.0"encoding="utf-8"><siteMap><siteMapNodeurl="~/default.aspx"title="首页"description="首页"><siteMapNodeurl="~/Newslist.aspx"title="新闻"description="新闻"><siteMapNodeurl="~/PENews.aspx"title="体育新闻"description="体育新闻"/><siteMapNodeurl="~/internationalNews.aspx"title="国际新闻"description="国际新闻"/></siteMapNode><siteMapNodeurl="~/userManage.aspx"title="用户管理"description="用户管理"><siteMapNodeurl="~/userRegister.aspx"title="用户注册"description="用户注册"/><siteMapNodeurl="~/userLogin.aspx"title="用户登录"description="用户登陆"/></siteMapNode></siteMapNode></siteMap>然后再添加一个新的Web页面,使用默认名称“Default.aspx”,添加一个SiteMapDataSource控件,ID属性使用默认的SiteMapDataSource1。在“Default.aspx”页面再添加一个TreeView控件,将DataSourceID属性值设为"SiteMapDataSource1,即连接了数据源,“Default.aspx”。第6章习题及练习选择题1)A2)B3)C4)B5)B6)A7)C8)C9)B10)D11)B12)B13)C14)A15)B填空题continue2)System.Enum3)整型、实型、字符型和布尔型4)ifswitch5)56)封装性、继承性和多态性7)值类型、引用类型和指针类型8)80简答题1)一个ASP.NET的Web页面包含以下几个部分:指令:供编译器处理的ASP.NET页面和用户控件时使用的命令。HTML标签:作为外观设计的一部分,不能在代码中被访问。服务器控件:允许用户及页面交互的控件,在服务器上被处理,允许引发服务器端事件。代码声明块:定义当呈现页时执行的内联代码或内联表达式,放在<%…%>标记中。代码呈现块:把用C#语言编写的代码放在<script>标签中。页面事件:页面触发时的事件。控件事件:在客户端被用户触发的事件。2)Page指令的常用属性属性说明AutoEventWireUp指示页的事件是否自动绑定。如果启用了事件自动绑定,则为true;否则为false。默认值为trueBuffer确定是否启用了HTTP响应缓冲。如果启用了页缓冲,则为true;否则为false。默认值为trueCodeFile指定指向页引用的代码隐藏文件的路径Debug指示是否应使用调试符号编译该页。如果应使用调试符号编译该页,则为true;否则为false。由于此设置影响性能,因此只应在开发期间将此属性设置为trueEnableSessionState定义页的会话状态要求。如果启用了会话状态,则为true;如果可以读取会话状态但不能进行更改,则为ReadOnly;否则为false。默认值为true。这些值不区分大小写EnableTheming指示是否在页上使用主题。如果使用主题,则为true;否则为false。默认值为trueEnableViewState指示是否在页请求之间保持视图状态。如果要保持视图状态,则为true;否则为false。默认值为trueInherits定义供页继承的代码隐藏类。它及CodeFile属性(包含指向代码隐藏类的源文件的路径)一起使用Language指定在对页中的所有内联呈现(<%%>和<%=%>)和代码声明块进行编译时使用的语言。值可以表示任何.NETFramework支持的语言,如C#Theme指定在页上使用的有效主题标识符。如果设置Theme属性时没有使用StyleSheetTheme属性,则将重写控件上的单独的样式设置,允许您创建统一而一致的页外观Trace指示是否启用跟踪。如果启用了跟踪,则为true;否则为false。默认值为falsepublic:对任何类和成员都公开,无限制访问;protected:仅仅对该类以及该类的派生类公开;private:仅仅对该类公开;internal:只能值包含该类的程序集中访问该类(只是单独的项目,而不是整个解决方案);protectedinternal:只能在本类、派生类或者包含该类的程序集中访问。值类型直接存储它的数据内容,包括简单数据类型、结构类型和枚举类型;引用类型不存储实际数据内容,而是存储对实际数据的引用,包括类、字符串、数组、委托和接口等。值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型。装箱转换是指将一个值类型隐式或显式地转换成一个对象类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的值装箱,就是创建一个对象实例并将这个值复制给这个对象,装箱后的对象中的数据位于堆中,堆中的地址在栈中。被装箱的类型的值是作为一个拷贝赋给对象的。拆箱转换是指将一个对象类型显式地转换成一个值类型,或是将一个接口类型显式地转换成一个执行该接口的值类型。注意装箱操作可以隐式进行但拆箱操作必须是显式的。拆箱过程分成两步:首先,检查这个对象实例,看它是否为给定的值类型的装箱值。然后,把这个实例的值复制给值类型的变量。程序阅读题1)比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a<b则返回-1。2)采用选择排序的方法对数组a中的n个整数按照从小到大的次序排列。3)求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志。4)显示输出数组a中大于等于平均值的所有元素值。5)912156)5811147)251025108)57编程题1)usingSystem;classTest{staticvoidMain(){floatx,y,z,temp;Console.Write("请输入一个实数:");x=float.Parse(Console.ReadLine());Console.Write("请输入一个实数:");y=float.Parse(Console.ReadLine());Console.Write("请输入一个实数:");z=float.Parse(Console.ReadLine());temp=x>=yx:y;temp=temp>=ztemp:z;Console.WriteLine("最大数为:{0}",temp);}}2)usingSystem;classTest{staticvoidMain(){charch;Console.WriteLine("请输入一个字符");ch=char.Parse(Console.ReadLine());if(ch>='A'&&ch<='Z')Console.WriteLine("大写字母");elseif(ch>='a'&&ch<='z')Console.WriteLine("小写字母");elseif(ch>='0'&&ch<='9')Console.WriteLine("数字");elseConsole.WriteLine("其他字母");}}3)usingSystem;classTest{staticvoidMain(){inti=2,j;boolb;Console.WriteLine("2到100中的素数为:");while(i<=100){b=true;j=2;while(j<=i-1){if(i%j==0){b=false;break;}j++;}if(b==true)Console.Write("{0}",i);i++;}Console.WriteLine();}}4)usingSystem;classTest{publicstaticvoidMain(){intscore;Console.WriteLine("请输入学生成绩");score=int.Parse(Console.ReadLine());score=score/10;switch(score){case10:Console.WriteLine("成绩优秀");break;case9:Console.WriteLine("成绩优秀");break;case8:Console.WriteLine("成绩良好");break;case7:Console.WriteLine("成绩及格");break;case6:Console.WriteLine("成绩及格");break;default:Console.WriteLine("成绩不及格");break;}}}5)usingSystem;classTest{publicstaticvoidMain(){conststringUserName="admin";conststringPassWord="123456";stringusername,password;inti=1;while(i<=3){Console.WriteLine("请输入用户名");username=Console.ReadLine();Console.WriteLine("请输入密码");password=Console.ReadLine();if(username==UserName&&password==PassWord)break;elseConsole.WriteLine("你输入的用户名或者密码错误,请重新输入用户名和密码");i++;}if(i<=3)Console.WriteLine("正在登录系统");elseConsole.WriteLine("不能登录系统");}}6)usingSystem;classTest{publicstaticvoidMain(){inti,j,temp;constintn=10;int[]SortArray=newint[n];for(i=0;i<n;i++){Console.Write("\n请输入一个数:");SortArray[i]=int.Parse(Console.ReadLine());}Console.Write("\n等待排序的数据序列为:");for(i=0;i<n;i++){Console.Write("{0}",SortArray[i]);}for(i=n-1;i>=0;i--){for(j=0;j<=i-1;j++){if(SortArray[j]>SortArray[j+1]){temp=SortArray[j];SortArray[j]=SortArray[j+1];SortArray[j+1]=temp;}}}Console.Write("\n已经排序后的数据序列为:");for(i=0;i<n;i++){Console.Write("{0}",SortArray[i]);}Console.WriteLine();}}7)usingSystem;structstudent{publicintno;publicstringname;publicstringsex;publicdoublescore;}classTest{staticvoidMain(string[]args){studentstu;stu.no=10003;="小小";stu.sex="女";stu.score=89.5;Console.WriteLine("学生的学号是{0},名字叫{1},性别是{2},程序设计的成绩是{3}",stu.no,,stu.sex,stu.score);}}8)usingSystem;classClassName{publicvoidfind(outintmax,outintmin,paramsint[]array){intn=array.Length,i=1;max=array[0];min=array[0];while(i<n){if(array[i]>max)max=array[i];elseif(array[i]<min)min=array[i];i++;}}}classTest{staticvoidMain(string[]args){intmax,min;int[]a=newint[10]{97,65,32,17,58,43,79,81,23,10};ClassNames=newClassName();s.find(outmax,outmin,a);Console.WriteLine("最大数为:"+max);Console.WriteLine("最小数为:"+min);}}第7章习题及练习1.选择题1)B2)B3)A4)D5)A2.填空题1)None身份验证、Windows验证、Forms身份验证(Cookie身份验证)、Passport身份验证2)拒绝所有用户访问3)DataSource、Database、Uid、Pwd4)基本验证方式、简要验证方式、窗口验证方式5)基于ACL及资源权限的授权方式、URL授权6)Session_OnStart、Session_OnEnd3.简答题1)对于一个Web应用程序来说,很重要的一点就是能够辨别访问者的角色和对资源访问的限制。为了做到这一点,就要对其身份进行验证。在解决谁能进入系统的问题中,通常会维护一张允许进入系统的用户的名单,当用户要求进入的时候,判断他是否是合法用户。这样一来,问题就转化为如何有效地判别一个用户是否是系统的有效用户,称之为“身份验证”过程。一个常见的验证过程是,当进入某些系统时,被要求输入用户和口令。当用户进入以后,只允许他访问事先指定给他的资源,这一过程称为“授权”。只有通过授权检查后,用户才能够对相应资源进行操作。在ASP.NET环境中,ASP.NET和IIS结合在一起为用户提供身份验证和授权服务。2)<sessionStatemode="InProc"timeout="30"></sessionState>Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb应用程序的配置信息(如最常用的设置ASP.NETWeb应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。主要配置参数:自定义错误页、配置Session变量、全球化设置、配置Access数据库连接和配置SQLserver数据库连接。4)Global.asax文件是一个特殊文件,它包含应用程序的某些服务信息,例如应用程序是如何开始的、应用程序是如何结束的。但是Global.asax文件是ASP.NET应用程序的可选文件,如果应用程序包含此文件,则应用程序就从此文件开始运行,同时该文件还包含响应ASP.NET或HTTP模块引发的应用程序级别事件的代码。Global.asax文件不能包含任何形式的输出语句,只能包含以下内容:应用程序事件过程Application_OnStart和Application_OnEnd的脚本;会话事件过程Session_OnStart和Session_OnEnd的脚本;请求事件过程Application_OnBeginRequest和Application_OnEndRequest的脚本;使用<object>标记声明的应用程序作用域对象或会话作用域对象。5)Application对象支持OnStart、OnEnd、OnBeginRequest和OnEndRequest四个事件。这四个事件的程序代码放在网站根目录下特定的Global.asax文件中。Application_OnStart事件:在应用程序运行过程中第一次有页面被访问前触发,即在一个虚拟目录中第一个ASP.NET程序执行时触发。并且Application_OnStart事件在整个应用程序运行期间只被触发一次。Application_OnEnd事件:在应用程序退出时或者服务被终止时触发,即ASP.NET应用程序停止时被触发。并且Application_OnEnd事件在整个应用程序运行期间只被触发一次。Application_OnBeginRequest事件:在每一个ASP.NET应用程序被请求时就发生,即客户每访问一个ASP.NET程序时,就触发一次该事件。Application_OnEndRequest事件:在ASP.NET应用程序结束时发生,即每一个ASP.NET程序结束时,触发该事件。6)ASP.NET提供了四种错误处理机制,它们有一定的优先级顺序:Page_Error事件、ErrorPage属性、Application_Error事件和<customErrors>配置项,优先级依次降低。第8章习题及练习选择题BADCBBC填空题(1)MapPath(2)DateTime.Now.AddDays(1);(3)Cookie(4)Request.QueryString[“id’].ToString();(5)IsPostBack(6)Response.Write(“<script>alert(‘登录成功’);window.location.href=’index.aspx’</script>”);

简答题答:Page对象的Init事件和Load事件均在页面加载过程中发生;在Page对象的生命周期中,Init事件只在页面初始化时触发一次;Load事件在初次加载及每次回发中都会触发;若希望事件代码只在页面首次加载时被执行,可以将其放入Init事件,或放入Load事件并利用Page.IsPostBack属性判断是否为首次加载。答:二者都可以实现从当前页面跳转到另一页面的功能。Execute在新页面中的程序执行完毕后自动返回到原页面,继续执行后续代码。而Transfer方法在执行了跳转后不再返回原页面,后续语句不会被执行。但跳转过程中Request、Session等对象中保存的信息不变,也就是说从A页面使用Transfer方法跳转到B页面后,可以继续使用A页面中提交的数据。答:三个对象都是ASP.NET中及状态管理相关的对象。其中,Application对象和Session对象都可在服务器端保存数据或对象,使用方法和常用属性、事件、方法也基本相同。但Application对象中保存的信息是为所有来访的客户端浏览器共享的,而Session对象保存的数据则是仅为特定的来访者使用的。Cookie对象同Session对象一样,页是保存特有用户的信息的对象,并且也能够实现数据的跨页使用;不同的是Cookie对象将信息保存在客户端,不是很安全,而且数据量有限;Session对象将信息保存在服务器端,对数据量没有限制。答:①使用Response对象Redirect方法URL中的查询字符串,使用Request对象的Querystring属性读取;②使用Request对象的Form属性读取表单数据;③使用Session对象;④使用Cookie对象;⑤使用Application对象;⑥使用Server对象的Transfer方法。程序题(1)在新建立的网站中添加三个页面分别为:Response.aspx、Server.aspx、Welcome.aspx。其中,Response.aspx.cs页面的代码为:protectedvoidPage_Load(objectsender,EventArgse){this.Title="Response对象登录页面";}protectedvoidButton1_Click(objectsender,EventArgse){Response.Redirect("welcome.aspx");Server.aspx.cs页面的代码为:protectedvoidPage_Load(objectsender,EventArgse){this.Title="Server对象登录页面";}protectedvoidButton1_Click(objectsender,EventArgse){Server.Transfer("welcome.aspx");}Welcome.aspx.cs页面的代码为:protectedvoidPage_Load(objectsender,EventArgse){Response.Write("欢迎来到我的网站。");}分别在Response.aspx和Server.aspx页面单击按钮,运行的结果为:从上图中可以看出,Response对象的Redirect方法和Server对象的Transfer方法都可以实现页面的跳转,但是使用Response对象的Redirect方法跳转后,地址栏中的地址为新页面的地址,而使用Server对象的Transfer方法跳转后,地址栏中的地址仍未原来页面的地址。(2)protectedvoidPage_Load(objectsender,EventArgse){Response.Write("姓名:");Response.Write("<inputname='username'type='text'>");Response.Write("<inputname='OK'type='button'value='确定'Onclick='alert(\"您好!\");'>");}(3)protectedvoidPage_Load(objectsender,EventArgse){Response.Write("<h2align=\"center\"><fontcolor=red>网站访问人数计数器</font></h2>");Response.Write("<hr>");if(Application["counter"]==null){Application["counter"]=1;}else{Application.Lock();Application.Set("counter",(int)Application["counter"]+1);Application.UnLock();}intnum=(int)Application["counter"];Response.Write("<palign=\"center\">欢迎您,您是本站第"+num+"位访客!</p>");}(4)在全局文件中的Application_Start事件中添加代码:Application["count1"]=0;Application["count2"]=0;Application["count3"]=0;Vote.aspx.cs中的代码:protectedvoidButton1_Click(objectsender,EventArgse){if(Request.Cookies["vote"]!=null){Response.Write("<scriptlanguage='javascript'>alert('您已经投过票了');</script>");}else{Response.Cookies["vote"].Value="yes";Response.Cookies["vote"].Expires=DateTime.Now.AddDays(1);Response.Write("<scriptlanguage='javascript'>alert('投票成功,感谢您的参及');</script>");Application.Lock();Application.Set("count1",(int)Application["count1"]+1);Application.UnLock();}}protectedvoidLinkButton1_Click(objectsender,EventArgse){Label1.Text="科比:"+Application["count1"].ToString()+"<br>"+"姚明:"+Application["count2"].ToString()+"<br>"+"乔丹:"+Application["count3"].ToString();}protectedvoidButton2_Click(objectsender,EventArgse){if(Request.Cookies["vote"]!=null){Response.Write("<scriptlanguage='javascript'>alert('您已经投过票了');</script>");}else{Response.Cookies["vote"].Value="yes";Response.Cookies["vote"].Expires=DateTime.Now.AddDays(1);Response.Write("<scriptlanguage='javascript'>alert('投票成功,感谢您的参及');</script>");Application.Lock();Application.Set("count2",(int)Application["count2"]+1);Application.UnLock();}}protectedvoidButton3_Click(objectsender,EventArgse){if(Request.Cookies["vote"]!=null){Response.Write("<scriptlanguage='javascript'>alert('您已经投过票了');</script>");}else{Response.Cookies["vote"].Value="yes";Response.Cookies["vote"].Expires=DateTime.Now.AddDays(1);Response.Write("<scriptlanguage='javascript'>alert('投票成功,感谢您的参及');</script>");Application.Lock();Application.Set("count3",(int)Application["count3"]+1);Application.UnLock();}}第9章习题及练习1.选择题1)B2)D3)C4)B5)A6)D7)A8)D9)D10)C11)B12)A13)B14)C15)C16)A17)C18)A2.填空题1)Button、LinkButton、ImageButton2)CircleHotSpot、RectangleHotSpot、PolygonHotSpot3)DropDownList1.Items[0].Selected4)Click事件5)HyperLink6)IsPostback7)RangeValidator8)ErrorMessage9)CompareValidator、Type、Operator10)HeaderText3.简答题1)HTML控件在默认情况下属于客户端(浏览器)控件,服务器无法对其进行控制。HTML控件是从HTML标记衍生而来的,每个控件对应于一个或一组HTML标记。HTML控件可以通过修改代码将其变成Web服务器端控件,几乎所有的HTML标记只要加上runat="server"这个服务器控件标识属性后都可以变成服务器端控件。及普通HTML标记相比最大的区别在于,服务器端控件可以通过服务器端代码来控制。2)控件有一些基本的常用属性,如控件的名称、位置、透明、可见性、对齐方式、重叠控件的显示顺序以及控件的焦点获取和设置等。如:Attributes、BackColor、BorderColo、BorderWidth、BorderStyle、CssClass、Enabled、Font、ForeColor、Location、Name、Text、Visible、Style、Size等。控件的常用事件:事件说明DataBinding当一个控件上的DataBind方法被调用并且该控件被绑定到一个数据源时发生这个事件Disposed从内存中释放一个控件时发生这个事件,这是控件生命周期的最后一个阶段Init控件被初始化时发生这个事件,这是控件生命周期的开始Load把控件装入页面时会发生这个事件,该事件在Init后发生PreRender控件准备生成它的内容时会发生这个事件Unload从内存中卸载控件时发生这个事件控件常用的事件还有鼠标事件和键盘事件。3)TextBox控件常用的控件属性如下所示:AutoPostBack:在文本修改以后,是否自动重传。Columns:文本框的宽度。EnableViewState:控件是否自动保存其状态以用于往返过程。MaxLength:用户输入的最大字符数。ReadOnly:是否为只读。Rows:作为多行文本框时所显式的行数。TextMode:文本框的模式,设置单行,多行或者密码。Wrap:文本框是否换行。4)ImageButton控件及Button控件不同的地方在于ImageButton控件的事件处理过程。事件处理过程的第二个参数类型为ImageClickEventArgs,而不是EventArgs,该参数提供鼠标单击处的坐标(e.X和e.Y),从而可以确定用户在图像的什么位置上单击了鼠标。5)使用以下属性可以获取用户上传文件的信息:HasFile属性:检查是否有上传文件,若有,则返回true.属性:用户上传文件名称。PostedFile属性:它是一个对象属性,是HttpPostedFile对象,包含许多上传文件的信息。Posted:上传文件大小,以字节为单位。Posted:上传文件类型。6)正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式及所搜索的字符串进行匹配。7)<asp:RangeValidatorid="RangeValidator1"Type="Integer"ControlToValidate="TextBox1"MinimumValue="3"MaximumValue="10"Text="Pleaseenternumberbetween3and10"runat="server"></asp:RangeValidator>8)<asp:RequiredFieldValidatorid="RequiredFieldValidator1"runat="server"ControlToValidate="1stNumber"Text="*"InitialValue="Pleaseselectanumber"/>4.编程题1)<%@PageLanguage="C#"%><html><headid="Head1"runat="server"><title>TextBox控件AutoPostBack属性示例</title><scriptrunat="server">protectedvoidPage_Load(Objectsender,EventArgse){intAddAnswer;Page.Validate();if(Page.IsValid){AddAnswer=Convert.ToInt32(TextBox1.Text)+Convert.ToInt32(TextBox2.Text);Label1.Text=AddAnswer.ToString();}}</script></head><body><formid="form1"runat="server"><div><asp:TextBoxID="TextBox1"runat="server"Columns="10">1</asp:TextBox> +<strong></strong> <asp:TextBoxID="TextBox2"runat="server"Width="90px"AutoPostBack="True">2</asp:TextBox> = <asp:LabelID="Label1"runat="server"Font-Bold="True"Width="72px"></asp:Label><br/><strong>当用户在TextBox控件中按Enter或Tab键时<br/>将两个整数的加法计算结果回发</strong></div></form></body></html>2)参考答案(1)设计Default.aspx页面新建一个ASP.NET网站,向缺省主页Default.aspx中添加有关用于页面布局的HTML表格,按需要调整表格的行列数及各行列的宽、高。(2)设置Default.aspx中各控件的属性首先将事先使用Photoshop等图像软件制作的标题图片、按钮图片和分隔线图片复制到站点所在的文件夹中,通常需要在站点文件夹内创建一个名为“images”的子文件夹,然后将页面中需要的图片文件复制到其中。选择Image1控件,在属性窗口中单击ImageUrl栏右侧的按钮,打开图9-1所示的对话框。选择了需要的添加到控件中的图像文件后,单击【确定】按钮。如果在“选择图像”对话框中看不到images文件夹和其中的图片文件,可在“解决方案资源管理器”中右键单击项目名称,在弹出的快捷菜单中执行“刷新文件夹”命令。图9-1设置Image控件的ImageUrl属性选择Image2控件,参照上面介绍的方法设置其ImageUrl属性,同时需要将Image2的Height(高)属性设置为“2px”。对于6个ImageButton(ImageButton1~ImageButton6)控件,不但要设置其ImageUrl属性,还需要设置其PostBackUrl属性,以便当用户单击控件时可以将页面导航到指定的URL。页面的Title(标题)属性和5个HyperLink的初始属性在页面的装入(Page_Load)事件中通过代码进行设置。(3)向站点中添加网页在“解决方案资源管理器”中,在弹出的快捷菜单中执行“添加新项”命令,在打开的对话框中选择“Web窗体”,并指定网页名称后单击【添加】按钮。本例中需要为两个文本教程创建两个新页面,mac.aspx和computer.aspx。其中mac.aspx由一些文字和一个Image控件组成,页面打开时如图9-2所示。由于mac.aspx页面中不包含动态内容,也无需编写任何程序代码,故该页面完全可以使用FrontPage等将其设计为静态网页(.htm),以减少服务器无谓的资源开销。图9-2mac.aspx页面(4)向ImageMap控件中添加图片对于computer.aspx页面可按图9-3所示进行设计。在实际操作时可将前面设计完成的default.aspx复制一份,名称改为computer.aspx。(注意,应将包含原代码的default.aspx.cs文件同样复制一份,并改名为computer.aspx.cs)。然后将栏目标题改为“微型计算机硬件组成”并向页面中添加一个ImageMap控件。图9-3computer.aspx页面设计在设置ImageMap控件的属性前,应将需要显示到控件中的图片文件(如本例的computer.jpg)复制到站点文件夹的images子文件夹中。在设计视图中选中ImageMap控件,在属性窗口中单击ImageUrl栏右侧的按钮,在打开的“选择图像”对话框中选择需要的图片文件名。若需要的图片未出现在文件列表中,可在解决方案资源管理器中,右键单击images文件,在弹出的快捷菜单中执行“刷新文件夹”命令。设置完毕的computer.aspx页面如图9-4所示。图9-4添加图片后的页面效果(5)设置ImageMap控件的HotSpots属性ImageMap控件的HotSpots属性描述了控件中作用点的集合。在设计视图中选中ImageMap控件,在属性窗口中单击HotSpots栏右侧的右侧的按钮,打开“HotSpots集合编辑器”对话框,单击【添加】按钮向其中添加一个圆形作用点和一个矩形作用点。将圆形作用点的X、Y、R属性值分别设置为150,70和50;将矩形作用点的Bottom、Left、Right、Top属性值分别设置为130、265、210和10。分别将圆形作用点和矩形作用点的NavigiteUrl属性指向事先通过FrontPage等工具制作完成的静态网页,display.htm和host.htm。为了能使目标网页能在新窗口中打开,应将作用点的Target属性设置为“_blank”。这样,页面打开时,若用户将鼠标指针移动到了作用点区域,指针将变成表示超链接的“手形”标记,单击鼠标页面将被导航到指定页面,如图9-5所示。图9-5单击作用点区域打开新的网页(6)编写事件代码Default.aspx页面被装入时执行的事件代码如下:protectedvoidPage_Load(objectsender,EventArgse){this.Title="欢迎访问网上课堂";HyperLink1.Text="怎样设置和使用Foxmail";HyperLink1.NavigateUrl="rtsp://00:45/rm/01.rm";HyperLink2.Text="如何安装杀毒软件";HyperLink2.NavigateUrl="rtsp://00:554/rm/02.rm";HyperLink3.Text="更新Windows操作系统";HyperLink3.NavigateUrl="rtsp://00:554/rm/03.rm";HyperLink4.Text="如何查看网卡的MAC地址";HyperLink4.NavigateUrl="mac.aspx";HyperLink4.Target="_new";HyperLink5.Text="微型计算机的组成";HyperLink5.NavigateUrl="computer.aspx";}computer.aspx页面被装入时执行的事件代码如下:protectedvoidPage_Load(objectsender,EventArgse){this.Title="微型计算机硬件组成"; //设置页面标题}3)(1)页面设计<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><html><headrunat="server"><title>图像地图的应用</title></head><body><formid="form1"runat="server"><div>选择地点<br/><asp:ImageMapid="ImageMap1"HotSpotMode="Navigate"ImageUrl="~/images/map.jpg"runat="server"onclick="ImageMap1_Click"><asp:CircleHotSpotRadius="100"X="150"Y="400"HotSpotMode="PostBack"PostBackValue="store"AlternateText="Info"/><asp:CircleHotSpotRadius="100"X="350"Y="400"HotSpotMode="PostBack"PostBackValue="hospital"AlternateText="Info"/><asp:RectangleHotSpottop="300"Left="430"Bottom="500"Right="600"HotSpotMode="PostBack"PostBackValue="classroom"AlternateText="Info"/><asp:RectangleHotSpottop="300"Left="630"Bottom="500"Right="800"HotSpotMode="PostBack"PostBackValue="mess"AlternateText="Info"/><asp:RectangleHotSpottop="300"Left="830"Bottom="500"Right="1000"HotSpotMode="PostBack"PostBackValue="hall"AlternateText="Info"/></asp:ImageMap><br/><asp:Labelid="lblMsg"runat="server"text="Label"></asp:Label></div></form></body></html>(2)编辑逻辑publicpartialclass_Default:System.Web.UI.Page{protectedvoidImageMap1_Click(objectsender,ImageMapEventArgse){stringstr="";switch(e.PostBackValue){case"store":str="商店";break;case"hospital":str="医院";break;case"classroom":str="教室";break;case"mess":str="食堂";break;case"hall":str="礼堂";break;}lblMsg.Text="您现在正处于"+str;}}4)程序设计步骤如下:(1)设计Web页面新建一个ASP.NET网站,切换到设计视图。向由系统自动创建的Default.aspx页面中添加一个用于布局的HTML表格,适当调整表格的行列数;向表格中添加必要的控件说明文字;添加4个用于接收用户输入数据的文本框TextBox1~TextBox4;2个按钮控件Button1~Button2;1个用于显示通过验证信息的标签控件Label1;添加2个必须项验证控件RequiredFieldValidator1~RequiredFieldValidator2,2个比较验证控件CompareValidator1~CompareValidator2,注意将必须项验证控件分别放置在用户名栏和密码栏的右侧单元格,将比较验证控件分别放置在确认密码和出生日期栏的右侧单元格;适当调整各控件的大小及位置。(2)设置对象属性各控件的初始属性设置见下表。表各验证控件的初始属性设置控件属性值说明RequiredFieldValidator1ControlToValidatetxtUsername指定验证控件的验证对象Text"必须输入用户名"验证失败时显示的信息RequiredFieldValidator2ControlToValidatetxtPassword指定验证控件的验证对象为密码输入文本框Text"密码不能为空!"验证失败时显示的信息CompareValidator1ControlToComparetxtPassword指定要及之比较的控件ControlToValidatetxtRepassword指定要控制的控件Text"两次输入的密码不同!"验证失败时显示的信息CompareValidator2ControlToValidatetxtBirthday指定要控制的控件OperatorDataTypeCheck指定操作方式为数据类型比较Text"日期格式应为:1983-4-23"验证失败时显示的信息TypeDate指定数据类型为日期型用于输入用户数据的文本框和用于显示输出信息的标签控件的ID属性及某些初始属性参见程序运行界面及程序代码。(3)编写事件代码protectedvoidPage_Load(objectsender,EventArgse){this.Title="CompareValidator控件应用示例";txtUsername.Focus();//页面加载时,用户名文本框得到焦点lblPass.Text="";//清除通过验证标签中的文本}protectedvoidbtnOK_Click(objectsender,EventArgse){lblPass.Text="本页已通过验证!";//通过验证后在标签中显示的信息}5)(1)页面设计:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><html><headrunat="server"><title>服务器端闰年检测</title><styletype="text/css">.style1{text-align:center;width:479px;color:#FFFFFF;font-weight:bold;}</style></head><body><formid="form1"runat="server"><divclass="style1"style="background-color:#808080">闰年检测</div><divstyle="width:478px"><br/>年份:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox><asp:CustomValidatorID="CustomValidator1"runat="server"ControlToValidate="TextBox1"ErrorMessage="请输入闰年"onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator><br/><asp:ButtonID="Button1"runat="server"onclick="Button1_Click"Text="检测"/> <asp:LabelID="Label1"runat="server"BorderStyle="Dotted"></asp:Label></div></form></body></html>(2)逻辑设计:protectedvoidCustomValidator1_ServerValidate(objectsource,ServerValidateEventArgsargs){intyear;year=int.Parse(args.Value);if(year%4==0&&year%100!=0||year%400==0)args.IsValid=true;elseargs.IsValid=false;}protectedvoidButton1_Click(objectsender,EventArgse){if(Page.IsValid)Label1.Text="页面检测通过";elseLabel1.Text="页面检测未通过";}第10章习题及练习1.填空题1)DataSet2)Cookie3)Connection4)ConnectionString5)数据定义、数据操作、数据控制。6)GridView7)DetailsView8)FormView2.简答题1)ADO.NET中的常用对象有哪些?它们的功能分别是什么?答案:DataSet对象及其子对象是真正使得ADO.NET及众不同的原因。它为离线数据提供了一种存储机制。DataSet对象从来不及任何数据源通信,对用来生成它的数据也一无所知。最好将它理解为内存中一个用来存储已经检索到数据的仓库。Provider中包含许多针对数据源的组件,开发人员通过这些组件可以使程序及指定的数据源进行连接。Provider主要包括Connection对象、Command对象、DataReader对象以及DataAdapter对象。Provider用于建立数据源及数据集之间的连接,它能连接各种类型的数据源,并能按要求将数据源中的数据提供给数据集,或者将应用程序编辑后的数据发送回数据库。这四个对象介绍如下:Connection对象:Connection对象负责建立和保持对数据源的连接,以及任何连接特有的信息。Command对象:Command对象存储将要送往数据源的查询以及任何适用参数。DataReader对象:DataReader对象提供快速、仅前向的读取能力,用于快速遍历记录。DataAdapter对象:DataAdapter对象是连接DataSet对象和数据源的桥梁。DataAdapter对象负责从Command对象检索数据并用返回的数据生成DataSet对象。它同时也负责将DataSet对象的改变永久性写回数据源。2)Connection对象最常用的方法有哪些?它们的语法格式分别是什么?答案:Open()方法使用Open()方法打开一个数据库连接。为了减轻系统负担,应该尽可能晚地打开数据库。其语法格式为:连接对象名.Open()Connection对象名:是创建的Connection对象的名称。Close()方法使用Close()方法关闭一个打开的数据库连

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论