Asp.net mvc 期末试题及答案

来源:互联网 发布:网络语奥利奥什么意思 编辑:程序博客网 时间:2024/04/30 15:18

一.单选题(切记:在题号左边的括弧中,填写正确的字母选项.共30分,每题2分):

( D )1.在MVC世界中,有个重要的概念Dry,其意思是:

A.写代码要有规范. B.写代码要有适合的框架. C.关注点要分离. D.不要重复你自己.

( C )2.在MVC世界中,有个重要的概念SoC,其意思是:

A.以习惯替换配置. B.不要重复你自己. C.关注点分离. D.写代码要有适合的框架.

( A )3.在MVC世界中,有个重要的概念CoC,其意思是:

A.以习惯替换配置. B.测试驱动. C.关注点分离. D.写代码要有适合的框架.

( D)4.在MVC世界中,有个重要的概念ORM,其意思是:

A.以习惯替换配置. B.实体框架模型. C.关注点分离. D.对象关系映射.

( A )5.如果定义了一个可供网址直接访问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

D.以上写法都不对.

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

A.错误. B.正确.

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

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

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

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

D.以上都错.

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

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

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

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

D.以上都错.

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

A.错误.B.正确.

( C )10.在Models目录下,创建一个类文件,在某个Property上加一个NotMapperd Attribute,其目的是:

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

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

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

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

( A )11.在Models目录下,创建一个类文件,有以下代码:

Public virtual Teacher Teacher{get;set;}

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

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

( B )12.Code First中的数据库迁移技术(DB Migration),其作用是:

A.可以升级调整数据库架构, 但不允许恢复到旧版数据库.

B.调整数据库架构时,任然保留现有的数据库数据.

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

A.错误. B.正确

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

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

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

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

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

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

二.阅读曾经的上机代码,回答问题(30分):

1.部分代码:

HomeControllers.cs部分内容:   

[HttpPost]      

public ActionResult DynamicOutput(stringRowNum)

{

int iRowNum=0;

if (int.TryParse(RowNum, out iRowNum) ==false)

{

ViewBag.Err = "IntTryErr";

return View("Err");

}

if (iRowNum < 0)

{

ViewBag.Err = "RowNum < 0";

return View("Err");

}

ViewBag.RowNum = iRowNum;

return View();

}

 

DynamicOutput.cshtml部分内容:  

 @{ int iRowNum = (int)ViewBag.RowNum;}<table width="400" border="1" align="center"> <caption>学生花名册</caption> <thead style="color:#000080;background-color:#BFBFFF">  <tr><th>编  号</th>    <th>姓  名</th><th>年  龄</th></tr>  </thead>  <tbody>  @{  for(int i=0;i<iRowNum;i++)  {  <tr>    <td>@(i+1)</td>    <td> </td>    <td>  </td>  </tr>  }  }  </tbody></table>

简答上述代码含义:

根据输入的行数,动态产生网页内容,内容为一个学生花名册表格,表格行数与输入的行数相关.如果输入值错误或者为负数,显示相应的错误提示页面.

2.部分代码:

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

每登录一个用户,在线人数加1,每注销一个用户,在线人数减1.

3.部分代码:

public class RouteConfig

{

public static voidRegisterRoutes(RouteCollection routes)

{

routes.MapRoute(

name: "ForbidDownloadRar",

url:"Content/Download/a/b/c/{id}.rar",

defaults: new { controller ="Home", action = "ForbidDownloadRar" }

);

 

routes.MapRoute(

name: "ForgeHtml",

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

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

///////////////////路由值得添加约束

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

);

}

}

简答上述代码含义:

创建了2个路由映射:

第一个名称叫ForbidDownloadRar,假设通过http://localhost:2020/ Content/Download/a/b/c/xxx.rar,访问时,自动切换到http://localhost:2020/Home ForbidDownloadRar/  显示[禁止下载]提示页面.第二个名称叫ForgeHtml,假设通过http://localhost:2020/ "china/htzd/8.html 访问时,显示http://localhost:2020/Home/Index页面内容。通过此方法可模拟静态页面,此伪静态页面扩展名是html,文件名约束为数值.

 

4.部分代码:

public ActionResult Search(string Name,int?Age)

{

int age ;

age = Age??-1;

if (string.IsNullOrEmpty(Name) != true&& string.IsNullOrWhiteSpace(Name) != true)

{

var students = db.Students;

if (age == -1)

{

varresults = students.Where(m => m.Name == Name).OrderByDescending(m =>m.Age).ThenBy(m=>m.Name);

return View(results.ToList());

}

else

{

var results = students.Where(m => m.Name== Name).Where(m=>m.Age==age).OrderBy(m => m.Age);

return View(results.ToList());

}

}

ViewBag.Tip = "Name不能为空。";

return View("Index");

}

简答上述代码含义:

如果用户只输入的学生名称,搜索数据库后,显示符合要求的学生名单.最终结果,按照年龄的递减顺序,姓名的递增顺序排列;如果用户输入的学生名称,并且输入了年龄,搜素数据库后,按照年龄的递增顺序排序。

5.部分代码:

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");

}

}

简答上述代码含义:

自定义了一个权限过滤器,时间分钟数为偶数时,满足要求。如果权限不满足要求时,会切换到提示页面。

三.简答题(40分):

1.MVC让软件开发的过程大致切割成哪三个主要单元?分别有什么作用?(9分)

2.采用Entity Framework或其它ORM开发技术,有哪三种开发模式?(9分)

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

4. 在MVC平台,网页设计TextBox控件时,编辑代码有四种形式,以下已经写出了第一种,请写出后三种.(8分)

@using MvcViewModelTest.Models  @model AllPersons  <h2>第1种: <input id="tea_Name" name="tea.Name" type="text" value="马老师" /> <h2><h2>第2种: @Html.TextBox("tea.Name", Model.tea.Name)</h2>  <h2>第3种: @Html.TextBoxFor(m => m.tea.Name)</h2>  <h2>第4种: @Html.EditorFor(m => m.tea.Name)</h2>    

5.什么是Ajax技术?在使用Ajax辅助方法之前,必须要先在页面中载入哪些文件才能正常执行?(7分)



1 0
原创粉丝点击