十大 ASP.NET MVC 面试题






4.60/5 (71投票s)
这篇文章列出了十大 ASP.NET MVC 面试问题。
1. 概述 MVC (Model-View-Controller)?
MVC (Model-View-Controller) 是一种架构软件模式,它基本上解耦了 Web 应用程序的各个组件。通过使用 MVC 模式,我们可以开发对更改更灵活的应用程序,而不会影响应用程序的其他组件。
- “模型”(Model)基本上是领域数据。
- “视图”(View)是渲染领域数据的用户界面。
- “控制器”(Controller)将用户操作转换为对模型执行的适当操作。
2. 什么是 ASP.NET MVC?
ASP.NET MVC 是微软推出的一个基于 MVC (Model-View-Controller) 架构设计模式的 Web 开发框架。微软通过使用 ASP.NET MVC 框架简化了基于 MVC 的应用程序的开发。
3. ASP.NET MVC 和 ASP.NET WebForms 之间有什么区别?
ASP.NET Web Forms 使用页面控制器模式(Page controller pattern)方法来渲染布局,而 ASP.NET MVC 使用前端控制器模式(Front controller approach)。在页面控制器方法中,每个页面都有自己的控制器,即处理请求的代码隐藏文件。另一方面,在 ASP.NET MVC 中,所有页面共用一个控制器来处理请求。
请点击链接了解 ASP.NET MVC 和 ASP.NET WebForms 之间的区别。
4. ASP.NET MVC 的核心功能是什么?
ASP.NET MVC 框架的核心功能是:
- 明确分离应用程序关注点(表示层和业务逻辑)。它降低了复杂性,使其非常适合多团队协作的大规模应用程序。
- 它是一个可扩展且可插拔的框架。我们可以轻松插入组件并进一步自定义它们。
- 它为 URL 路由提供了广泛支持,有助于创建友好的 URL(这意味着对人类和搜索引擎都友好)。
- 它支持测试驱动开发(TDD)方法。在 ASP.NET WebForms 中,测试支持依赖于 Web 服务器,但 ASP.NET MVC 使其独立于 Web 服务器、数据库或任何其他类。
- 支持现有 ASP.NET 功能,如成员资格和角色、身份验证和授权、提供程序模型和缓存等。
有关上述 核心功能 的详细理解,请继续阅读。
5. 您能解释一下 ASP.NET MVC 框架中的请求流程吗?
ASP.NET MVC 框架的请求流程如下:
请求从客户端到达控制器。控制器发挥其作用,决定使用哪个模型来进一步处理请求,然后将该模型传递给视图,视图再转换模型并生成适当的响应,最终渲染给客户端。
您可以点击链接,以了解 ASP.NET MVC 中的完整应用程序生命周期。
6. ASP.NET MVC 中的路由是什么?
在典型的 ASP.NET 应用程序中,传入请求会映射到物理文件,例如 .aspx 文件。另一方面,ASP.NET MVC 框架使用更易于描述用户操作的友好 URL,但这些 URL 不会映射到物理文件。让我们看看 ASP.NET 和 ASP.NET MVC 的以下 URL。
//ASP.NET 方法指向物理文件(Student.aspx)
//显示所有学生
http://locahost:XXXX/Student.aspx
//按 Id = 5 显示学生
http://locahost:XXXX/Student.aspx?Id=5
//ASP.NET MVC 方法指向控制器,即 Student
//显示所有学生
http://locahost:XXXX/Student
//按 Id = 5 显示学生
http://locahost:XXXX/Student/5/
ASP.NET MVC 框架使用路由引擎,它将 URL 映射到控制器类。我们可以为引擎定义路由规则,以便它将传入的请求 URL 映射到适当的控制器。
实际上,当用户在浏览器窗口中输入 ASP.NET MVC 应用程序的 URL 并按下“go”按钮时,路由引擎会使用在 `Global.asax` 文件中定义的路由规则来解析 URL 并找出相应控制器的路径。
你可以在这里找到 ASP.NET MVC 路由 的完整详细信息。
7. ViewData、ViewBag 和 TempData 之间有什么区别?
为了将数据从控制器传递到视图以及在随后的请求中传递数据,ASP.NET MVC 框架提供了不同的选项,即 ViewData
、ViewBag
和 TempData
。
ViewBag
和 ViewData
都用于控制器和相应视图之间的通信。但这种通信仅限于服务器调用,如果发生重定向,它将变为 null
。因此,简而言之,它是一种在控制器和相应视图之间维护状态的机制。
ViewData
是一个字典对象,而 ViewBag
是一个动态属性(C# 4.0 的新特性)。ViewData
作为字典对象,可以使用字符串作为键进行访问,并且对于复杂类型需要进行类型转换。另一方面,ViewBag
不需要类型转换和 null
检查。
TempData
也是一个字典对象,它在 HTTP 请求期间保持有效。因此,TempData
可以用于在重定向之间(即从一个控制器到另一个控制器)维护数据。
您可以在 这里 轻松找到 ViewBag、ViewData 和 TempData 实现的详细示例。
8. ASP.NET MVC 中的 Action 方法是什么?
我已经解释过 ASP.NET MVC 框架中的请求流程,即来自客户端的请求首先到达控制器。实际上,MVC 应用程序通过使用 Global.asax 中定义的路由规则来确定相应的控制器。控制器对每个用户操作都有特定的方法。发送到控制器的每个请求都对应一个特定的 Action
方法。以下代码示例中的“ShowBooks
”就是一个 Action
方法的示例。
public ViewResult ShowBooks(int id)
{
var computerBook = db.Books.Where(p => P.BookID == id).First();
return View(computerBook);
}
Action 方法使用 Model 执行特定操作,并将结果返回给 View。如上例所示,ShowBook 是一个 Action 方法,它以 Id 作为输入,获取特定书籍数据并作为 ViewResult 返回给 View。在 ASP.NET MVC 中,我们有许多内置的 ActionResult 类型
- ViewResult
- PartialViewResult
- RedirectResult
- RedirectToRouteResult
- ContentResult
- JsonResult
- EmptyResult
- 还有更多...
要获取可用 ActionResult 类型及其辅助方法的完整列表,请单击此处。
重要提示: ASP.NET MVC 框架中控制器的所有公共方法默认都被视为 Action 方法。如果我们的控制器想要有一个非 Action 方法,我们需要使用 NonAction 属性明确标记它,如下所示
[NonAction]
public void MyNonActionMethod() { ….. }
9. 解释模型(Model)在 ASP.NET MVC 中的作用?
ASP.NET MVC 的核心功能之一是它将输入和 UI 逻辑与业务逻辑分离。ASP.NET MVC 中模型的职责是包含所有应用程序逻辑,包括验证、业务和数据访问逻辑,但视图(即输入)和控制器(即 UI 逻辑)除外。
模型通常负责从持久介质(如数据库)访问数据并对其进行操作,因此你可以预料到面试官在这里可能会问与数据库访问相关的问题,以及 ASP.NET MVC 面试问题。
10. ASP.NET MVC 中的 Action 过滤器是什么?
如果我们需要在 action 方法之前或之后应用一些特定逻辑,我们使用 action 过滤器。我们可以将这些 action 过滤器应用于控制器或特定的控制器 action。Action 过滤器基本上是自定义类,它们提供了一种在控制器 action 中添加前置 action 或后置 action 行为的方法。
例如
Authorize
过滤器可用于限制对特定用户或角色的访问。OutputCache
过滤器可以在特定持续时间内缓存控制器操作的输出。
相关 Web 开发教程
- ASP.NET Web API 实用指南
- 了解 ASP.NET MVC5 和 EF6 的 Model-First 方法
- 您的第一个 ASP.NET MVC5 Web 应用程序
- WCF 与 ASMX Web Services
- 前 10 名 WCF 面试题
- 在 WCF 中启用跟踪的 4 个简单步骤