1.1概念
MVC是一种软件设计模式,即:Model(模型)、View(视图)、Controller(控制器) 。其主要设计目标是将用户接口和逻辑层相分离,以便开发人员更好的关注逻辑层的设计和测试,并是整个程序具备清晰的的结构。ASP.Net MVC 框架是MVC设计模式的实现方式之一。ASP.Net MVC 框架有三大组成部分:Model:模型是实现应用程序的数据逻辑的应用程序组件,通常被称为“数据模型”。模型对象会检索模型状态。并将其存储在数据库中。View:视图是显示应用程序用户界面(UI)的组件。ASP.Net MVC 支持Razor视图引擎,所以视图推荐使用CSHTML页面,而不是ASPX。Controller:控制器是处理用户交互,使用模型并选择视图来显示界面的组件。在MVC应用程序中,视图仅显示界面,控制器则用于处理和响应用户输入和交流。例如,控制器处理查询字符串值,并将这些值传递给模型,而模型使用这些值来查询数据库,并用View显示结果。
ASP.Net MVC应用程序包括默认文件和目录如下:
/App_Data:数据的物理存储区,即本地化的数据库文件或数据文件。
/App_Start:包含多个静态配置类,执行应用程序的初始化任务。
/Content:放置应用程序的静态内容,如CSS、可下载文件、音乐文件等。
/Images:存放图片目录。
/Controller:放置控制器文件。控制器文件是后缀为.cs或.vb的类文件。
/Model:放置数据模型对象的文件,如.cs、.vb、.edmx、.dbml等。
/Scripts:放置JavaScript、Jquery文件,文件后缀名通常为.js。
/View:放置视图文件,文件后缀名.schtml或.aspx。
/Global.asax:全局应用程序类文件。
/Web.config:应用程序配置文件。
1.2控制器向视图传递数据
控制器向视图传递数据可以使用三种对象:
ViewData:是字典类型,存放键/值对数据。ViewData只在一次HTTP请求中有效,当这次请求结束后,会自动清空其值。
ViewBag:存放dynamic动态类型数据。
TempData:默认保存在Session中,控制器每次从Session中获取TempData,然后清除Session。在每次请求结束后,TempData结束什么周期。
针对这一些知识在面试的时候别人可能会问以下问题:
1、MVC和三层架构的区别?
“三层架构”是一种软件抽象的层次结构,是对复杂软件的一种纵向切分。每一层完成同一类型的操作,以便将各种代码以它完成的“使命”作为依据来分割,降低软件的复杂度,提高可为维护性。同时各层有向下的依赖关系,表现层依赖业务逻辑层,业务逻辑层依赖数据访问层。
MVC模式是一种复合设计模式,其组成部分之间不存在明显的层次结构,没有明显的向下的依赖关系。相反,View和Model相对比较独立,而Controller是链接两者的桥梁。相对而言,MVC是横向切分。内容上更复杂,结构更清晰、耦合性更低,每个部分可以独立测试。需要注意的是,“三层架构”中的Model层由实体类构成,与MVC的MOdel由业务逻辑和数据访问组成。
2、简述ViewData、ViewBag和TempData的区别。
ViewData仅在当前控制器的操作方法中有效,其生命周期和视图相同。ViewBag是dynamic动态类型,它在程序运行时动态解析,读取数据无需转换类型。TempData数据默认保存在Session中,最多只能经过一次Controller传递,且每个元素最多只能被访问一次,访问后自动删除。