.NET面试题——第5篇 ASP.NET MVC面试题

ps:博主的.net core学习交流群—qq裙:831181779

1. MVC中的视图是用来干什么的?

MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)

从结构上看,可以分成三层,

1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。

2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。

3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

2. MVC与webform相比有什么优势?

MVC的优点:

1.通过把项目分成Model、View和Controller,使得复杂项目更加容易维护,减少项目之间的耦合。

2.没有服务器表单控件,可以更方便的控制应用程序的行为

3.应用程序通过Controller来控制程序请求,并提供了原生的UrlRouting功能来重写Url。

4.使Web程序对单元测试的支持更加出色

5.强类型view实现,更安全,更高效。

3. MVC有多少种不同类型的结果类型,请详细描述。

有12种,最主要的是ActionResult类,它是一个基础类,它有11个子类型。

ViewResult - 给响应流渲染指定的视图

PartialViewResult - 给响应流渲染指定的局部视图

EmptyResult - 返回空的响应结果。

RedirectResult - 执行一个HTTP转向到指定的URL。

RedirectToRouteResult -执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定

JsonResult - 序列化一个ViewData对像到JSON格式。

JavaScriptResult - 返回一段Javascript代码,它可以在客户端执行。

ContentResult - 写内容到响应流,不需要视图支持。

FileContentResult - 返回一个文件到客户端。

FileStreamResult - 返回一个文件到客户端,它提供的是流。

FilePathResult - 返回一个文件到客户端。

4. mvc过滤器你使用过吗?用来做什么?

ActionFilter(方法过滤器):接口名为[IActionFilter],在控制器方法调用前/后执行

ResultFilter(结果过滤器):接口名为[IResultFilter],在控制器方法调用完,跳转至view页面前/后执行

AuthorizationFilter(授权过滤器):接口名为[IAuthorizationFilter],所有过滤器中最先执行的

ExceptionFilter(异常处理过滤器):接口名为[IExceptionFilter],在控制器方法抛出异常时执行

5. MVC的生命周期是怎样的?

1) Request 请求到来

2) IIS 根据请求特征将处理权移交给 ASP.NET

3) UrlRoutingModule将当前请求在 Route Table中进行匹配

4) UrlRoutingModule在RouteCollection中查找Request匹配的RouteHandler,默认是MvcRouteHandler MvcRouteHandler 创建 MvcHandler实例.

5) MvcHandler执行 ProcessRequest.

6) MvcHandler 使用 IControllerFactory 获得实现了IController接口的实例,找到对应的HomeController

7) 根据Request触发HomeController的Index方法

8) Index将执行结果存放在ViewData

9) HomeController的Index方法返回 ActionResult

10) Views/Home/Index.aspx将 ViewData呈现在页面上

11) Index.aspx执行ProcessRequest方法

12) Index.aspx执行Render方法 输出到客户端

6. MVC与三层架构比最主要的优势是什么?

三层是: UI 界面层

BLL 业务逻辑层

DAL数据访问层

(特殊的Model实体层)

MVC是:

        M Model(模型层) 业务逻辑以及数据库的交互

        V View(视图层) 显示数据和提交数据

        C Controller(控制器) 负责从视图读取数据,控制用户输入,并向模型发送数据。

两者的区别

        三层的 UI = MVC的 View

        三层的 Model+ BLL+DAL = MVC的 Model

MVC优点

        易于进行单元测试

        易于进行测试驱动开发

        低耦合性、高重用性、可适用性

        较低的生命周期成本

        快速的部署

        可维护性

        有利于软件工程化管理

MVC缺点

内部结构复杂

7. Request与Response的下面有什么方法和作用

Request类:1.getSession():获取Session对象

2.getCookies():获取所有的Cookie,返回一个Cookie数组

3.getMethod():获取请求类型

Response类:1.setHeader():设置消息头

2.addCookie():添加Cookie

3.setContentType():告知浏览器数据类型

8. post和get的区别。

\1. get/post均可向服务器传送页面数据。

\2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

\3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

\4. get传送的数据量较小不能大于**2KBpost传送的数据量较大,一般被默认为不受限制**。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

\5. get安全性非常低post**安全性较高**。但是执行效率却比Post方法好。

建议:

1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;

2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不想只会CRUD的猿某人

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值