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传送的数据量较小,不能大于**2KB。post传送的数据量较大,一般被默认为不受限制**。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
\5. get安全性非常低,post**安全性较高**。但是执行效率却比Post方法好。
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;