C#.NET面试题汇总系列五:MVC

1. TempData\ViewBag\ViewData区别?

数据类型

  • ViewData 是字典类型,值为object 型,使用值时需要强制转换
  • ViewBagdynamic(动态)型,会在程序运行的时候动态解析,使用时它会自动根据数据类型转换
  • TempData 是字典类型,值为object 型,使用值时需要强制转换
  • 强类型本质上是存入ViewData.Model

作用域

  • ViewBagViewData只在当前Action中有效,等同于View,只对当前View有用
  • TempData 存储在 Session 中可以跨 Action 中进行传值,TempData的值在取了一次后会自动删除

补充说明

  • ViewDataViewBag 中的值可以互相访问,因为 ViewBag 的实现中包含了 ViewData,所以两者之间数据共享,如果 key 相同,那么取最后的一个,覆盖之前

2. 阐述下MVC框架的机制,各个模块的作用?

所谓模型,就是MVC需要提供的数据源,负责数据的访问和维护

所谓视图,就是用于显示模型中数据的用户界面

所谓控制器,就是用来处理用户的输入,负责改变模型的状态并选择适当的视图来显示模型的数据

3. ASP.NET和ASP.NET MVC的关系?

ASP.NET MVC是在核心ASP.NET基础之上构建的

4. MVC对ASP.NET好处在哪里?

提供非常清晰的层级管理,像ui层,也就是view, 数据层model和管理层controller

单元测试比较容易,改善了数据模型和视图的重用性,代码的结构更加优化

5. MVC有多少种不同类型的结果类型?

MVC中的12种结果类型,最主要的是ActionResult类,它是一个基础类,它有11个子类型

6. 什么是WebAPI

WebAPI是一个通过HTTP方式公开数据的技术,它跟随REST规则

7. ASP.NET MVC的过滤器有哪些?

MVC支持的过滤器有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常)

8. ASP.NET中的六大对象有哪些?

Response:该对象用于将数据从服务器发送回浏览器

Request:该对象用于检索从浏览器向服务器发送的请求中的信息

Server:该对象用于访问服务器上的资

Application:用于共享应用程序基信息

Session:该对象用于存储在多个页面调用之间特定用户的信息

Cookie:Cookie就是Web服务器保存在用户硬盘上的一段文本

9. 请简述使用ASP.NET MVC框架访问一个页面的执行流程

第一步:当请求到达我们的服务器时,在asp.net取得控制之前,windows操作系统的核心组件 HTTP.SYS一直在监听请求端口, 接下来asp.net会通知所有注册的httpModule。 有一个httpModule是默认注册了的。那就是UrlRoutingModule,也就进入了路由模块.核心路由接管控制。

第二步:当核心路由系统接管控制之后,会把请求封装成 RequestContext这样一个数据结构。这个数据结构中包含了几乎所有的请求信息,以便后面的组件可以任意的去使用它。mvc框架就是使用requestContext中的信息,将控制权转移给对应的controller对象,并提出其中的action参数。

第三步:mvcRouteHandler从核心路由模块过渡到mvc框架之后,就要生产对应的controller对象类处理了。
这些对象 你可以采用 不标准的方法通过直接实现Icontroller接口来创建 ,也可以通过controllerFactory来实现。当然这个控制器工厂可以是你自定义的实现了IcontrollerFactory接口的自定义工厂(或者是默认工厂的子类),也可以是mvc框架自带的DefaultControllerFactory来创建。

第四步:controllers内部的这些action并不是直接自己invoke的 而是通过一个IActionInvoker来触发执行,然后返回actionResult给ViewEngine去解析。同理,这个IActionInvoker我们也可以自行实现

posted @ 2022-03-01 14:13  位永光  阅读(689)  评论(0编辑  收藏  举报