65.9K
CodeProject 正在变化。 阅读更多。
Home

十大 ASP.NET MVC 面试题

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (71投票s)

2013 年 9 月 15 日

CPOL

6分钟阅读

viewsIcon

636428

这篇文章列出了十大 ASP.NET MVC 面试问题。

一份必备的 ASP.NET MVC 面试问题和答案列表,包含概念和必要的代码示例。如果你理解以下关键概念,你一定会在面试中感到更自在。但与此同时,你需要为 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 框架提供了不同的选项,即 ViewDataViewBagTempData

ViewBagViewData 都用于控制器和相应视图之间的通信。但这种通信仅限于服务器调用,如果发生重定向,它将变为 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 开发教程

© . All rights reserved.