Asp.net MVC 的一些面试题
1、MVC框架支持的Filter有几种,执行的先后顺序是怎样的
2、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字典,使用时需要类型转换
3、阐述下MVC框架的机制,各个模块的作用
- ASP.NET MVC依赖于HttpHandler,关于请求是怎么进入控制器的,其实就是用到了HttpHandler
- Session、Cookie、Cache和Application这些ASP.NET的对象保存机制在MVC中依然是需要用到的
- HttpContext、Request、Response、Server对象在MVC中仍然可以使用,在Controller中通过智能感知的形式很容易得到这些对象
其它面试题目,来自 简书,作者:丁哥开讲
第1题, 什么是ASP.net mvc?
这是一个网络应用的开发框架。轻量型的,很容易测试的一个框架。它把整个应用程序分成三个组件: model view controller.
第2题, 解释一下model view controller。
Model是数据模型,用来表示应用中我们使用的数据。
Controller处理各种用户请求,并且把用户重定位到view。
View就是我们用户能看到的那一层。
第3题,解释一下mvc 4的新的功能。
异步control的处理。
JavaScript Bundling.
配置方法的分离。Mvc路径,web API和bundle。
移动端的模板支持。
Rest API service的模板支持。
第4题, 介绍一下mvc页面的life cycle。
app initialization.
Routing.
Instantiate and execute controller.
Locate and invoke controller action.
Instantiate and render view.
第5题, mvc对ASP.net的好处在哪里?
提供非常清晰的成绩管理,像ui层,也就是view, 数据层model和管理层controller。
单元测试比较容易。
改善了数据模型和视图的重用性。
代码的结构更加优化。
第6题, 什么是separation of concerns?
是一个分解的过程。把一个大的功能分解成几个小的功能,几个小功能之间重叠性非常低。对于mvc来说,比较关心从演示层到数据处理分层。
第7题什么是razor view engine?
这个引擎提供了数据绑定的显示模板。
@model MvcStore.Models.Customer
@{ViewBag.Title="Get Customers";}
<div class="cust"><h3><em>@Model.CustomerName</em></h3></div>
第8题, unobstrusive JavaScript是什么意思?
这个javascript的意思是说不会把JavaScript内嵌到你的页面的标记里面。
第9题,view model在mvc中的作用是什么?
Viewmodel是一个通常的类,有很多属性它可以绑定到视图上。它也可以通过属性来设定一些验证的规则。
第10题,Mvc中的路径是干什么的?
路径主要有两个部分,一个是路径的那个字符串,还有一个是它的处理函数。通过搜索这个路径以及对应的请求方法,然后找到对应的处理函数。
第11题, Mvc中的actions是什么?
Actions是controller里面的方法,主要处理两部分内容,一个是视图,另外一个是json数据。它的返回值类型是action result,是通过invoke action这个方法来调用。
第12题,什么是属性路径?
属性路径可以定义在controller层级或者是action层级。从mvc 5 才开始有的。
第13题,如何激活属性路径?
在registerRoutes里面添加map mvc attribute routes就可以激活属性路径。
第14题,什么是json binding?
从mvc3开始,使用json value provider factory来支持json binding. 允许action方法接收和绑定json类型的数据。这一点在向服务器发送数据的时候非常有用。
第15题,解释一下dependency resolution.
这个主要是来做dependency injection,这样可以使得代码耦合性非常低,可以更容易的进行测试。
第16题,解释一下mvc4中的bundle.config.
这个文件主要是用来注册一些非常有用的程序库像jquery。
第17题,在dot net mvc中,路径表是如何创建的?
RegusterRoutes用来注册各种路径,这个方法会在application start方法中被调用,这个方法存在于global.asax文件里面。在程序启动的时候,会被调用。
第18题,在mvc中比较重要的name spaces有哪些?
System.web.mvc, System.web.mvc.ajax, System.web.mvc.html, System.web.mvc.async
第19题,什么是view data?
view data,是一个数据字典,有key和value,从view data dictionary派生出来的,在action方法中,我们可以设定viewdata的值,在视图中,我们可以获取这些值。
第20题,view bag 和 view data之间的区别是什么?
view bag是view data的一个扩展。扩展以后可以创建动态的属性。这样的好处有:
不需要进行类型的转换。
我们可以使用dynamic关键字。
但是有一个缺点就是view bag要比view data慢一些。
第21题, 解释一下temp data。
是从temp data dictionary派生出来的,跟view data很类似,它也是key和value的对组合。它主要用在两个请求的交互当中,它们可能是两个actions或者两个controllers。它在视图中使用的时候需要类型转换。
第22题,什么是html Helpers?
Html helpers相当于在传统的web form中的控件。但是它更轻量级, 不会保存试图的状态和事件。
它返回html字符串,它可以直接被显示的网页上。从html helper时派生可以自定义html helpers。
第23题, 什么是ajax helpers?
它是用来对网页表格进行进一步请求的机制,它的扩展方法存在于System.Web.Mvc。
第24题,有哪些配置ajax helper的选项?
Url, 这是请求的链接。
Confirm这个是用来指定显示的确认消息。
On begin这个方法是在ajax请求之前被调用。
On Complete, 这个方法会在ajax请求之后被调用。
On success当ajax请求成功时,这个方法会被调用。
On failure, 当ajax请求失败时,这个方法会被调用。
Update trigger ID.在action返回的html中会存在目标元素, 这个ID就是对应这个元素的。
第25题,什么是mvc的layout?
它相当于传统的网页表格中的主页。它可以在多个页面中被引用。
@{
layout = "~/views/shared/testlayout.cshtml"};
}
这个地方,这个test layoutout作为一个子页面。
第26题,解释一下sections?
Sections是html页面的一部分。
@rendersection("testsection")
在子页面中我们定义如下的sections。
@section testsection {
<h1>test content</h1>
}
如果这个section没有定义的话会出错,我们可以使用一个required属性来防止页面出错。
@rendersection("testsection", required: false)
第27题, 解释一下render body和render page。
render body就相当于在网页表格中的content place holder。它存在于layout页面当中,一个layout页面只有一个render body。而在一个layout页面当中可以有多个render page.
第28题,什么是view start page?
这个页面是用来制作通用的layout页面,它可以被多个视图使用,在这个文件里的代码,会在程序加载的时候首先被执行。
第29题,解释一下显示视图的方法。
View在action中返回的是一个视图。
Partial view, 它是在action中返回一部分视图。
Redirect to action.它是用来重定向到不同的action里面,它可以在一个controller里面也可以在不同的controller里面。
第30题,action result的子类型是什么?
View result. Partial view result, redirect to route result, redirect result, JavaScript result, file result, HTTP status code result.
第31题,什么是非action方法?
在mvc中所有的公开方法都被认为是actions.如果你不想让你的方法作为actions,那你就需要添加non action属性。
[nonaction]
public void testmethod(){
}
第32题,如何改变action的名字?
可以使用action name属性来改变action的名字。
[actionname("testactionview")]
第33题,什么是视图代码块?
这些代码块儿非常适合定义变量。
@{
int x=123;
string y="aa";
}
第34题, 什么是helperpage.ajax属性?
这个属性主要是用来指明在一个网页中是否用了ajax.
第35题, 如何在mvc中,当dropdownlist改变的时候调用一个JavaScript的函数?
在on change的时候设定这个JavaScript方法的调用就可以了。
第36题,什么是validation anotations?
数据anotations存在于system.componentmodel.data .anotations. 它可以用作服务器端的验证也可以用作客户端的验证。有4个属性一个是required,一个是string length,一个是regular expression,一个是range。
第37题,为什么要使用html.partial?
这个方法用来显示html string指定的某块视图。
html.partial("testpartialview")
第38题,什么是html.Renderpartial?
这个方法向response里面写入数据的。没有任何返回值。
@{html.renderpartial("testpartialview")}
第39题, 什么是scaffold模板?
用来生成controller, model, views, 对应的是create, read, update, delete,这些功能操作。
第40题,解释一下scaffoldings的类型。
Empty
Create
Delete
Details
Edit
List
第41题,一个视图是否能在多个controller中分享?
是的,可以。
可以把这个视图放在一个shared的文件夹里面。当我们在创建一个新的mvc工程的时候,这个layout page就会被添加在分享的文件夹里面因为他会被多个子页面调用。
第42题, 在创建一个路径的时候,我们需要哪些组件?
首先是路径名字。
其次是路径的url。
再一个就是defaults。当被调用的时候,在某个controller里面需要被调用的那个action连同参数。
第43题, 为什么使用"{resource}.asd/{*pathinfo}"?
这样做主要是为了防止网络资源文件,比如web resource.asd,或者script resource.asd,被传送到一个controller上。
第44题, 我们如何向一个路径添加constraints?
我们可以通过regular expressions。
也可以通过Irouteconstraint接口.
第45题, razor视图的可能扩展名是什么?
cshtml
vbhtml
第46题,什么是partial view?
Partial view相当于传统网页表格中的user controls.
它的主要目的是为了重复使用这些视图,他们一般被放在一个共享文件夹里面。
html.partial()
html.renderpartial()
第47题, 如何向mvc中添加css?
使用link tag。
第48题, 能否用visual studio express向mvc添加测试案例?
不能,只有专业版和ultimate终极版才可以。
第49题,.glimpse 的作用是什么?
它是一个开源工具,用来调试mvc的路径。他用在客户端调试场景。可以通过本地的链接来激活打开。这是一个非常流行而有用的调试工具,它可以跟踪速度细节,网页细节等等
作者:丁哥开讲
链接:https://www.jianshu.com/p/ecef44e8779a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。