1、阐述下MVC框架的机制,是如何工作的?
M-模型,MVC需要提供的数据源,负责数据的访问和维护。
V-视图,用于显示模型中数据的用户界面。
C-控制器,用来处理用户的输入,负责改变模型的状态并选择适当的视图来显示模型的数据。
2、ASP.NET和ASP.NET MVC的关系?
MVC是在核心ASP.NET基础之上构建的,从mvc命名空间System.Web.Mvc就能看出,因为System.Web是Asp.NET的核心命名空间。
比如ASP.NET MVC依赖于HttpHandler,关于请求是怎么进入控制器的,其实就是用到了HttpHandler。
Session、Cookie、Cache和Application这些ASP.NET的对象保存机制在MVC中依然是需要用到的。
HttpContext、Request、Response、Server对象在MVC中仍然可以使用,在Controller中通过智能感知的形式很容易得到这些对象。
3、MVC与ASP.NET相比好处在哪里?
分层管理实现前后端代码分离、单元测试比较容易、改善了数据模型和视图的重用性、代码的结构更加优化。
4、MVC中的TempData、ViewBag、ViewData区别?
TempData 保存在Session中,Controller每次执行请求的时候,会从Session中先获取 TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删 除,ViewData存的是Key/Value字典,使用时需要类型转换。
ViewBag和ViewData只在当前Action中有效,等同于View,ViewBag比ViewData慢,ViewBag存dynamic类型数据,使用时不需要类型转换
ViewData和ViewBag 中的值可以互相访问,因为ViewBag的实现中包含了ViewData,ViewData存的是Key/Value字典,使用时需要类型转换
5、ASP.NET的WebPage的生命周期?
初始化》加载视图状态》处理回发数据》加载》发送回发更改通知》处理回发事件》预呈现》保存状态》呈现》处置》卸载
6、页面之间传值的几种方式?
页面间传值:
1)使用QueryString变量
2)PostBackUrl()方法
3)使用Server.Transfer方法
应用程序范围内传值:
1)使用Cookie对象变量
2)使用Session变量
3)使用Application对象变量
7、什么时候会用到cookie,session?它们的区别分别是什么?
Cookie通过在客户端记录信息确定用户身份,Sesion通过在服务器端记录信息确定用户身份。
1)session在服务器端,cookie在客户端(浏览器)
2)session默认被存在服务器的一个文件里(不是内存)
3)session的运行依赖session id,而session id是存在cookie中的,也就是说,如果浏览器禁用了cookie,同时session也会失效。
4)session可以放在文件、数据库、或内存中都可以。
8、view bag 和 view data之间的区别是什么?
view bag是view data的一个扩展。扩展以后可以创建动态的属性。
view bag的优点:
不需要进行类型的转换。
可以使用dynamic关键字。
缺点:view bag要比view data慢一些。
9、什么是partial view?
Partial view相当于传统网页表格中的user controls.
它的主要目的是为了重复使用这些视图,他们一般被放在一个共享文件夹里面。
10、在MVC中如何保持Sessions?
可以通过三种方式保持: tempdata, viewdata, 和viewbag。
11、已经有了ASPX,为什么还要Razor?
相比ASPX,Razor是一个干净的、轻量级的和语法更简单。
例如,ASPX:<%=DateTime.Now%>,Razor:@DateTime.Now
12、在MVC中如何去执行Windows认证?
你需要修改web.config文件,并设置验证模式为Windows。
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
然后在controlle或action中,你可以使用 Authorize 属性,指定哪个用户可以访问这个controller或action
13、MVC有哪些不同类型的结果类型?
有十二种类型,常用结果类型: ActionResult 、 ViewResult 、JsonResult 、RedirectResult、RedirectToRouteResult 等
ActionResult -它是一个基础类,其它结构类型是它的子类型
ViewResult - 给响应流渲染指定的视图
JsonResult - 序列化一个ViewData对像到JSON格式。
RedirectResult - 执行一个HTTP转向到指定的URL。
RedirectToRouteResult - 执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定。
14、什么是WebAPI?
HTTP是最常用的协议。可以使用HTTP方式传递数据给不同的客户端,例如:移动手机、Javascript,Windows应用等等。
WebAPI是一个通过HTTP方式公开数据的技术,使用REST规则。
15、什么是MVC中的打包和压缩?
打包与压缩帮助我们减少一个页面的请求时间,从而提高页面执行性能。
项目总是需要CSS和脚本文件。打包帮助你合并多个Javascript和css文件到单个文件,从而最小化多个请求到一个请求。
16、简述Func与Action的区别?
Func是有返回值的委托,Action是没有返回值的委托。
17、在项目中如何解决高并发问题?
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
优化数据库查询语句。
优化数据库结构,多做索引,提高查询效率。
统计的功能尽量做缓存。
尽量使用静态页面,减少容器的解析。
18、MVC的路由选择是什么?
路由选择功能帮你定义一个URL规则,映射URL到控制器。
19、在哪里写路由映射表?
在 “global.asax” 文件。
20、在MVC中关于Area的好处?
将模型、视图和控制器组织成应用程序的单独功能部分,方便与另一个创建的其他区域集成,便于进行单元测试。
21、你能解释一下MVC中的RenderBody和RenderPage吗?
RenderBody就像web表单中的ContentPlaceHolder。这将存在于布局页中,并将呈现子页/视图。布局页将只有一个RenderBody()方法。RenderPage也存在于布局页中,多个RenderPage()可以存在于布局页中。
22、 ASP.NET MVC的过滤器有哪些?
MVC的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的过程中如果想再加一些额外的逻辑处理。这时候就用到了过滤器。
MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常)。
Authorization:此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法。
Exception:用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常。
Action:用于进入行为之前或之后的处理。
Result:用于返回结果的之前或之后的处理。