2019-7-13 复习答案

2018—2019学年第2学期《Asp.Net MVC 》试卷-A

一.单选题(每题1分,共16分)

重要提示:个别题目多选,见注解.选择的字母填写到下方表格中,在其它地方填写的字母无效

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

1.定义数据结构,负责连接数据库,负责所有与数据有关的任务.

A.Model  B.View  C. Controller D. Content

2.决定系统运行流程,负责从模型中获得数据.

A.Model  B.View  C. Controller  D. App_Start

3.从控制器取得数据,并将数据显示在用户接口上.

A.Model  B.View  C. Controller  D. App_Data

4.View的视图引擎采用了两种:一种是Aspx,一种是:

A. CSS  B.XUnit  C. Razor  D. Nunit

5. 基于MVC的Asp.net Web应用开发框架使用一些基本原则,包括:

A.约定优于配置

B.不重复

C.尽量保持模块化

D.尽量为开发人员提供帮助,但必要时允许开发人员自由发挥

6.如果定义了一个可供网址直接访问Action,其名称是:Add(int First,int Second),那么URL访问形式比如为:

A.http://localhost:2180/Home/Add?First=1&Second=2

B.http://localhost:2180/Home/Add(1,2)

C.http://localhost:2180/Home/Add(First,Second)? First=1&Second=2

7.我们采用Entity Framework支持的Code First开发模式时,需要先建立数据库,然后再进行其它的开发.

A.错误. B.正确.

8.在Models目录下,创建一个类文件,需要声明主键,以下说法错误的是:

A.方法1把相应的Property名称写成为Id,型别为int.

B.方法2把相应的Property名称写成为StudentId,型别为int.

C.方法3在相应的Property上加一个Key Attrubute

D.以上都错.

9.在Models目录下,创建一个类文件,需要声明字段长度,以下说法正确的是:

A.在相应的Property上加一个MaxLength Attrubute

B.在相应的Property上加一个Required Attrubute

C.在相应的Property上加一个Key Attrubute

D.以上都错.

10.在Models目录下,创建一个类文件,如果希望把某Property声明为DateTime类型,在数据库表格里的相应字段设置为允许NULL的话,那么我们可以在该Property的类型声明后,加上一个问号.

A.错误.B.正确.

11.在Models目录下,创建一个类文件,在某个Property上加一个NotMapped Attribute,其目的是:

A.禁止用户通过URL直接访问此Property

B.允许用户通过URL直接访问此Property

C.把此Property排除在Entity Framework自动对应的数据库表格字段之外

D.把此Property包含在Entity Framework自动对应的数据库表格字段之内

12.在Models目录下,创建一个类文件,有以下代码:

Public virtual Teacher Teacher{get;set;}

关于virtual关键字,说法正确的是:

A.可启用”延迟装入”特性. B.关闭”延迟装入”特性.

13.在控制器中的Action前面加一个NonAction属性,其目的是禁止该Action发布到Web上.

A.错误. B.正确

14.判断模型绑定的验证结果,可以通过以下哪个对象进行判断?

A.Model.   B.State   C.ModelState  D.Session

15.我们在开发Asp.Net MVC时,有一个口头禅:

A.Model要轻,Controller要重,View要笨

B.Model要重,Controller要笨,View要轻

C.Model要重,Controller要轻,View要笨

16.在Global.asax文档里的Application_Start方法加上一段System.Data.Entity.Database.SetInitializer()方法,其中传入的参数使用的是System.Data.Entity.DropCreateDatabaseIfModelChanges泛型,其意思是:

A.数据模型发生变化时,数据库数据清除

B.数据模型发生变化时,数据库删掉重建

C.数据模型发生变化时,启用数据迁移

  • 判断题(每题1.5分,共15分)

重要提示:填写√或× 到下方相应的表格单元中,在其它地方填写的字母无效

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

 

1.控制器类必须位于项目的Controllers目录下,控制器类的名称必须以Controller结尾 Check

2.Views目录的第一级目录名称必须与其对应的控制器的名称相同

3.数据类型 int? 代表的意思是此数是整数,不能为空 fork

4.NoAction属性主要用来保护Controller中的特定public的方法不会发布到Web上成为Action

5.将方法的”public”访问修饰符改为”private”,封闭方法也可以达到NonAction属性的同样的作用

6.HttpGet,HttpPost,HttpDelete,HttpPut属性是动作方法选择器的一部分

7.如果在Action上应用HttpPost属性,则此Action只会在收到HTTP Post请求时,才可以选择此Action;否则客户端发送来的任何HTTP请求,对应Action都将会被选择并执行

8.Asp.Net MVC可以采用弱类型取得数据,也可以采用强类型取得数据,两者的区别在于View页面最上方申明的方式

9.DataTime在Net环境下是实值型, 但可以通过加 ? 符号,变成 Nullable 型别

10.布局页中的@RenderBody()符号,表达一个占位符.

三.阅读曾经的上机代码,回答问题(每题5分,共50分):

1代码片段:

[HttpPost]  

[Authorize(Users=”Liwei,dongzhuo”)]    

public ActionResult Create(Student stu)

{

///…

Return RedirectToAction(“CreateResult”);

}

请问上述代码中的[HttpPost]行及[Authorize]行的代码作用是什么?

[HttpPost]作用:它指明该方法只接受Post请求

[Authorize] 行的代码的作用:它指明只有Liwei和dongzhuo用户可以访问该Action

 

2代码片段:

@Html.ActionLink(“One”,”Second”)

请解释上述代码含义.

显示一个链接,对外显示:One,点击后访问的Action名称是:Second

 

 

3代码片段:

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

    filterContext.HttpContext.Response.Write("<br/>" + Para + ":OnActionExecuting");

    base.OnActionExecuting(filterContext);

}

public override void OnResultExecuted(ResultExecutedContext filterContext)

{

    filterContext.HttpContext.Response.Write("<br/>" + Para + ":OnResultExecuted");

    base.OnResultExecuted(filterContext);

}

简答上述代码的含义.

分别重新定义了一个动作过滤器,一个结果过滤器

 

 

 

4代码片段:

public class MyAuthorizeAttribute :AuthorizeAttribute

{

protected override bool AuthorizeCore(HttpContextBase httpContext)

{

return DateTime.Now.Minute % 2 == 0;

}

protected override void HandleUnauthorizedRequest(AuthorizationContextfilterContext)

{

filterContext.HttpContext.Response.Redirect("/Home/ShowTip");

}

}

简答上述代码含义:

重新定义一个授权过滤器,当当前时间分钟值为偶数时,授权通过,否则显示提示页面。

 

 

 

 

5代码片段:

public ActionResult Index()

{

  ///…..

  return View(“About”,”MasterPage”);

}

请解释上述代码中return View(“About”,”MasterPage”)的含义.

返回一个About View,采用的Layout:MasterPage

 

 

6代码片段:

public ActionResult GetPartialDemo()

{

  ///…..

  return PartialView(“PartialDemo”);

}

简答上述代码中return PartialView(“PartialDemo”)的含义.

 

返回一个 局部视图,局部视图名称:PartialDemo

 

 

 

7部分代码:

Global.asax.cs文件中的部分代码:

protected void Application_Start()

{

Application["OnLineUserCount"] = 0;

……

}

protected void Session_Start(object sender, EventArgs e)

{

Application.Lock();

Application["OnLineUserCount"] = Convert.ToInt32(Application["OnLineUserCount"]) + 1;

Application.UnLock();

}

protected void Session_End(object sender, EventArgs e)

{

Application.Lock();

Application["OnLineUserCount"] = Convert.ToInt32(Application["OnLineUserCount"]) - 1;

Application.UnLock();

}

简答上述代码含义:

网站初始启动时,在线人数初始为0.

每登录一个用户,在线人数加一;每退出一个用户,在线人数减一。

 

 

 

8部分代码:

routes.MapRoute(

      name: "ForgeHtml", 

      url: "china/htzd/{id}.html", 

      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 

      constraints: new {id=@"\d+" } 

); 

简答上述代码含义:

创建一个路由,名称为:ForgeHtml,当用户访问的网址类似是:http://xxxx/china/htzd/2.html,最终显示的内容是:http://xxx/Home/Index 网址的内容.

 

 

 

9这是上机的一个控制台的部分代码: …

public ActionResult CookiesTest()

{

      Response.Cookies["userName"].Value = "HTZD";

      Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

      return View("ShowResult");

}

public ActionResult SessionAbandom()

{

     Session.Abandon();

     return View("ShowResult");

}

public ActionResult CookiesAbandom()

{

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(-1);

return View("ShowResult");}

简答上述代码含义:

 

第一段代码:通过响应对象给客户端写一个UserName Cookie,值为HTZD,生命周期为1天.

第二段代码:Session.Abandon() 目的是结束会话.

第三段代码:通过响应对象结束UserName Cookie的生命周期.

 

 

 

 

10这是我们上机过的一个的部分代码,利用Ajax计算商和余数:

public ActionResult Div(DivModel m) 

if (m.Divisor == 0)

{

return Json(new {DivisorTip = "除数不能为0", Answer = "", Remainder = "" }, JsonRequestBehavior.AllowGet);

}

return Json(new {DivisorTip= "", Answer = m.Dividend / m.Divisor, Remainder = m.Dividend % m.Divisor }, JsonRequestBehavior.AllowGet);

}

请问Json 是什么意思? JsonRequestBehavior.AllowGet 这个代码的意义是什么?   代码里面的符号”/”及”%”代表什么意思?

JSON 是一种轻量级的数据交换格式。

JsonRequestBehavior.AllowGet 这个代码:Json值可以被get请求接受.

/ 代表取商值

% 代表取余数

 

四.简答题(19分):

1.数据库有哪三种开发模式?(6分)

数据库优先

模型优先

代码优先

 

2.从Controller取得数据后,可以传递给View.请说出几种传递方法。(7分)

ViewBag

ViewData

TempData

Session

Application

3.过滤器有哪几种?(6分)

动作过滤器

权限过滤器

结果过滤器

异常过滤器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gCodeTop 格码拓普 老师

您的鼓励.我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值