ASP.NETMVC⾯试问题与答案
什么是MVC (模型视图控制器)?
MVC是⼀个架构模式,它分离了表现与交互。它被分为三个核⼼部件:模型、视图、控制器。下⾯是每⼀个部件的分⼯:视图是⽤户看到并与之交互的界⾯。
模型表⽰业务数据,并提供数据给视图。
控制器接受⽤户的输⼊并调⽤模型和视图去完成⽤户的需求。
图: MVC (模型、视图、控制器)
你能解释下MVC的完整流程吗?
下⾯是MVC(模型、视图、控制器)架构的控制流程:
所有的终端⽤户请求被发送到控制器。
控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。
附加了模型数据的最终视图做为响应发送给终端⽤户。
MVC同时适⽤于Windows应⽤和Web应⽤吗?
相⽐Windows应⽤,MVC架构更适⽤于Web应⽤。对于Windows应⽤,MVP(Model View Presenter)架构更好⼀点。如果你使⽤WPF 和Silverlight,MVVM更适合。
使⽤MVC有哪些好处?
MVC有两个⼤的好处:
分离了关注点。后台代码被移到单独的类⽂件,我们可以最⼤限度的重复利⽤代码。
⾃动化UI测试成为可能,因为后台代码移到了.NET类。这让我们更容易做单元测试和⾃动化测试。
MVC不同于三层架构?
MVC是三层传统架构的演变。三层架构和MVC有⼀些通⽤的组成部分。 显⽰如下:
功能性三层 / 分层架构Model view controller architecture
显⽰与交互⽤户界⾯视图
UI逻辑⽤户界⾯控制器
商业逻辑 / 验证中间层模型
请求⾸先发送给谁?⽤户界⾯控制器
访问数据数据链接层数据链接层
图⽰: 三层架构
MVC的最新版本是哪个?
在写这篇⽂章时MVC已经发⾏了4个版本:MVC 1 , MVC 2, MVC 3, 和 MVC 4. 所以 MVC 4是最新版本。
每个版本的MVC有什么不同?
下⾯的表格列出了详细的不同点。但是在⾯试中限于时间问题,很难去说出所有的东西。所以,我标出了所有重要区别。
MVC 2MVC 3MVC 4 Client-side validation Razor ASP.NET Web API
Templated Helpers Areas Readymade project templates Refreshed and modernized default project t
emplates. New
mobile project template.
Asynchronous Controllers HTML 5 enabled templates Many new features to support mobile apps
Html.ValidationSummary Helper Method Support for Multiple View Engines,
JavaScript, and AJAX
Enhanced support for asynchronous methods
DefaultValueAttribute in
Action-Method
Model Validation Improvements
Parameters binding
Binary data with Model
Binders
DataAnnotations Attributes
Model-Validator Providers
New RequireHttpsAttribute
Action Filter
Templated Helpers
Display Model-Level Errors
MVC中的HTML helpers是什么?
HTML helpers帮助你渲染视图中的HTML控件。如果在⾯试中你想展⽰HTML输⼊框,下⾯是HTML helper代码。<%= Html.TextBox("LastName")%>
checkbox的代码如下。⽤这种⽅式我们可以创建现存的所有HTML控件。
<%= Html.CheckBox("Married")%>
“HTML.TextBox” 和 “HTML.TextBoxFor”有什么不同?
它们两个输出相同的HTML, “HTML.TextBoxFor”是强类型的,但“HTML.TextBox”不是。下⾯是⼀个实例,它仅仅创建了⼀个名字为“CustomerCode”的输⼊框。
jquery框架面试题Html.TextBox("CustomerCode")
下⾯的代码是⽤ “Html.TextBoxFor” 创建的HTML输⼊框,从对象"m"中调⽤了属性”CustomerCode“。
Html.TextBoxFor(m => m.CustomerCode)
相同的⽅式,我们可以⽤“Html.CheckBox” 和 “Html.CheckBoxFor”创建checkbox。
MVC的路由选择是什么?
路由选择功能帮你定义⼀个URL规则,映射URL到控制器。
routes.MapRoute(
"View",// Route name
"View/ViewCustomer/{id}",// URL with parameters
new{ controller ="Customer", action ="DisplayCustomer",
id = UrlParameter.Optional });// Parameter defaults
在哪⾥写路由映射表?
在 “global.asax” ⽂件。
我们可以映射多个URL到同⼀个动作吗?
是的,可以。只需要添加多条不同Key名字的记录,并且指定同样的控制器和动作。
使⽤hyperlink⽣成链接,如何从⼀个视图链接到另⼀个视图?
使⽤ActionLink⽅法,如下图所⽰。下⾯的代码⽣成⼀个简单的URL,链接到"Home"控制器的GotoHome动作。
<%= Html.ActionLink("Home","Gotohome")%>
如何限制⼀个动作的类型为GET或POST?
我们可以给MVC的动作⼀个HttpGet或HttpPost属性去限制HTTP的类型。你可以看下⾯的代码段,这个DisplayCustomer 动作只能
⽤HttpGet⽅式访问。如果我们尝试⽤Http post的⽅式,会看到错误信息。
[HttpGet]
public ViewResult DisplayCustomer(int id)
{
Customer objCustomer = Customers[id];
return View("DisplayCustomer",objCustomer);
}
在MVC中如何保持Sessions?
可以通过三种⽅式保持: tempdata, viewdata, 和viewbag。
tempdata, viewdata, 和 viewbag之间有什么不同?
图⽰: tempdata, viewdata, 和viewbag之间不同点
Temp data -在不同的控制器或动作间转换时保持数据。另外,进⾏页⾯转向时,tempdata可以保持数据。它是⼀个内部的Session变量。
View data - 可以在控制器和视图间保持数据。
View Bag - 它是视图数据的动态包装。使⽤Viewbag不需要类型转换。它使⽤的是内部动态关健词。
图⽰: 动态关键词
Session 变量 - 使⽤Session变量可以在任何实体间保持数据。
隐藏字段和HTML控件 - 只能何持数据从UI到Controller。可以使⽤HTML控制器或隐藏字段,⽤HTTP⽅式(POST或GET)发送数据到控制器。
下表是汇总:
Maintains data between ViewData/ViewBag TempData Hidden fields Session Controller to Controller No Yes No Yes Controller to View Yes No No Yes
View to Controller No No Yes Yes MVC是的局部视图是什么?
局部视图是⼀个可重复调⽤的视图(和⽤户控件⼀样),它可以嵌⼊到视图⾥⾯。例如:你的站点页⾯有统⼀的菜单、头部、尾部,如下图所⽰:
Figure: MVC中的局部视图
如果你想在所有页⾯重⽤菜单、头部和尾部。可以创建局部视图,然后在主视图中调⽤它们。
如何创建和调⽤局部视图?
点击"Create partial view"复选框去添加局部视图。
图⽰: 创建局部视图
局部视图创建好后,在主视图中使⽤ Html.RenderPartial调⽤。如下代码:
<body>
<div>
<% Html.RenderPartial("MyView"); %>
</div>
</body>
MVC中如何做输⼊验证?
早期的MVC版本中使⽤数据注释来做验证。除了注释还可以利⽤数据模型的属性标签。例如,下⾯的实例代码中Customer类有⼀个属
性customercode。
这个CustomerCode属性标注了⼀个Required数据。如果不提供CustomerCode数据,它将不能通过验证。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论