C#.NET面试题汇总系列五:MVC
1. TempData\ViewBag\ViewData区别?
数据类型
ViewData是字典类型,值为object型,使用值时需要强制转换ViewBag是dynamic(动态)型,会在程序运行的时候动态解析,使用时它会自动根据数据类型转换TempData是字典类型,值为object型,使用值时需要强制转换- 强类型本质上是存入
ViewData.Model中
作用域
ViewBag和ViewData只在当前Action中有效,等同于View,只对当前View有用TempData存储在Session中可以跨Action中进行传值,TempData的值在取了一次后会自动删除
补充说明
ViewData和ViewBag中的值可以互相访问,因为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我们也可以自行实现

浙公网安备 33010602011771号