Asp课后习题答案.docx
《Asp课后习题答案.docx》由会员分享,可在线阅读,更多相关《Asp课后习题答案.docx(15页珍藏版)》请在冰豆网上搜索。
Asp课后习题答案
第1章
1.简要叙述Web窗体编程模型与MVC编程模型的特点和优缺点。
【答】
Web窗体编程模型的最大优势是易理解、上手快,非常适合利用它置的Web服务器控件开发Web应用程序。
但是它还有最突出的问题,主要体现在以下两个方面。
新版本的Web窗体为了兼容旧版本,使Web服务器控件封装的功能变得越来越臃肿,这在一定程度上影响了程序运行的效率。
另外,HTML5、CSS3以及各种优秀开源架构的推出,也让【Web窗体】提供的Web服务器控件变得越来越无用。
随着大型Web应用程序项目的分工越来越细,【Web窗体】编程模型使大型Web项目的单元测试工作变得非常棘手。
在这种情况下,微软又推出了开源的、基于测试驱动的【MVC】编程模型。
MVC编程模型的特点
l任务分离
l基于测试驱动的开发
l对HTML5和CSS3的操控能力高
MVC编程模型的优点:
MVC设计模式可以方便开发人员分工协作,提高开发效率,增强程序的可维护性和拓展性...而且还利用Controller将Model与View分离,降低它们之间的耦合度.
MVC编程模型的缺点:
增加了系统结构和实现的复杂性。
视图与控制器间的过于紧密的连接视图对模型数据的低效率访问。
目前,一般高级的界面工具或构造器不支持MVC模式。
2.简要回答什么是区域,区域的作用是什么?
如何从主页导航到区域?
【答】
区域是将大型Web应用程序划分为各自独立的模块。
区域的作用是既可以让模块功能各自独立,又可以让这些不同的模块共享相同的资源(如图像文件、.css文件、js文件等),同时还能在某个模块中调用其他模块的功能。
从主页导航到区域可以使用Html.ActionLink方法,并用类似的代码:
Html.ActionLink("例1-各章布局示意","Index","ch01NavDemos",new{id="LayoutDemo"},null),并且区域引用设定的布局页,代码类似为:
{
Layout="~/Areas/Chapter01/Views/Shared/_ch01Layout.cshtml";
}。
第2章
1.什么是路由?
ASP.NETMVC是如何实现路由匹配的?
路由(Route)是指映射URL到处理程序的模式。
在ASP.NETMVC中,所有用户请求都要先经过ASP.NET路由系统,才能找到控制器中对应的操作方法(ActionMethod)。
即用户在览器的地址栏中输入网址并按回车键后,客户端就会向服务器发送HTTP请求,服务器则通过ASP.NET路由解析这一请求,从而找到对应的操作方法。
ASP.NETMVC定义了一个全局路由表(RouteTable),路由表中的每个Route对象都包含一个路由模板。
对于每个HTTP请求来说,URL路由系统都会遍历路由表找到与当前URL模式相匹配的Route对象,然后再利用它进一步解析出路由数据(RouteData)。
2.Razor视图引擎有什么特点?
Razor视图引擎具有如下特点。
(1)混合编程。
利用Razor视图引擎,可以直接在视图(包括视图页、布局页、分部页等)中混合使用C#代码和HTML、CSS以及JavaScript代码。
(2)语法简洁。
利用Razor视图引擎,在视图文件(扩展名为.cshtml的文件)中,只需要用一个字符“”就可以表示C#的语句块或者C#的联表达式,这与jQuery用一个“$”符号来调用JavaScript脚本有异曲同工之妙,唯一的区别是C#代码是在服务器上执行,jQuery代码是在客户端执行。
(3)与.NET框架的融合。
利用Razor视图引擎,可在视图中直接调用ASP.NET框架的所有功能以及所有.NET类库,而且在VS2013开发环境下键入HTML、CSS、脚本以及C#代码时,都具有丰富的智能提示和语法着色。
(4)有效防止脚本攻击。
Razor视图引擎默认自动对网页中输入的字符串进行HTML编码,以防止客户端脚本攻击。
3.什么是Bootstrap,Bootstrap与jQuery是什么关系?
Bootstrap是Twitter公司的开发人员研制的一种开源的、移动设备优先的自适应Web前端开发框架,该架构在jQuery的基础上,实现了移动设备优先的自适应界面显示,其目标是为Web开发人员提供一个最简单的设计形式,来解决不同设备访问时所带来的屏幕自适应问题。
jQuery是一种开源的用JavaScript编写的库函数。
而Bootstrap是在jQuery的基础上开发的Web前端开发框架,其本质就是利用CSS和JavaScript以及jQuery代码,为Web开发人员提供不同的自适应界面样式控制。
第3章
1.简要说明ViewBag和ViewData的主要区别和联系。
【答】
ViewData属性是一个System.Web.Mvc.ViewDataDictionary对象,这是一个不区分大小写的由“键/值”对组成的字典集合。
ViewBag属性是ViewData属性的另一种表示形式,该属性返回的是一种动态数据类型(dynamic)。
ViewBag和ViewData在功能上的作用完全相同,两者都是利用ViewDataDictionary对象传递数据到视图,使用时任选其中之一即可。
有一种情况除外,就是当“键”包含空格等特殊字符时(比如用英文人名作为“键”时,中间会有空格),此时只能用ViewData属性来实现。
一般在控制器过ViewBag定义要传递给视图的数据,在视图(Views)中再通过ViewBag获取并呈现这些数据。
2.举例说明如何在控制器中返回ViewResult对象和PartialViewResult对象。
【答】
publicViewResultIndex(stringid)
{
returnView(id);//返回用id指定的视图
}
publicPartialViewResultName(intuniversityid=0)
{
IListlstUniversityModel=this.GetModelList(universityid);
returnPartialView(lstUniversityModel);
}
3.举例说明如何通过模型实现服务器验证。
【答】
利用模型进行服务器验证,主要是在模型中定义验证规则,在页面上输入模型中对应的容时在服务端进行验证。
比如模型中定义:
publicclassMyUserModel
{
[Display(Name="用户Id")]
[Required(ErrorMessage="用户Id不能为空")]
[StringLength(3,MinimumLength=3,ErrorMessage="用户ID必须为3位")]
publicstringUserId{get;set;}
publicMyUserModel()
{
UserId="011";
}
}
}
页面上的代码如下:
Html.LabelFor(m=>m.UserId)
Html.ValidationMessageFor(m=>m.UserId)