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.正确.
A.方法1把相应的Property名称写成为Id,型别为int.
B.方法2把相应的Property名称写成为StudentId,型别为int.
C.方法3在相应的Property上加一个Key Attrubute
D.以上都错.
A.在相应的Property上加一个MaxLength Attrubute
B.在相应的Property上加一个Required Attrubute
C.在相应的Property上加一个Key Attrubute
D.以上都错.
A.错误.B.正确.
A.禁止用户通过URL直接访问此Property
B.允许用户通过URL直接访问此Property
C.把此Property排除在Entity Framework自动对应的数据库表格字段之外
D.把此Property包含在Entity Framework自动对应的数据库表格字段之内
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. | 2. | 3. | 4. | 5. | 6. | 7. | 8. | 9. | 10. |
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,最终显示的内容是: 网址的内容.
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分)
动作过滤器
权限过滤器
结果过滤器
异常过滤器