ASP.NET MVC 初学者教程:什么是, Archi质地

⚡ 智能摘要

ASP.NET MVC 是开源软件 Microsoft 该框架将 Web 应用程序分为模型、视图和控制器层,使开发人员能够完全控制 HTML、编写可测试的代码、实现清晰的路由,并为经典的 Web 表单提供轻量级的替代方案。

  • 🏛️ 结 构: 模型保存领域数据,视图使用 Razor 渲染用户界面,控制器协调两者之间的所有请求。
  • 为什么选择 MVC: 它解决了 Web Forms 的 ViewState 和性能开销问题,并实现了清晰的路由和测试驱动开发。
  • 🔀 路由: 基于路线 URL将传入的请求映射到控制器操作,取代基于文件的 .aspx URL具有 SEO 友好路径。
  • 🧪 可测试性: 由于视图不包含业务逻辑,因此控制器和模型可以进行隔离的单元测试。
  • 网页表单比较: Web Forms 使用事件驱动的服务器控件;MVC 使用请求驱动的操作和手动状态管理。
  • 🛠️ 最佳实践: 将业务逻辑放在模型中,保持控制器简洁,并使用局部视图或布局来重用标记。

ASP.NET MVC 教程

什么是 ASP.NET MVC?

ASP.NET MVC 是一个开源的 Web 开发框架,来自 Microsoft 它提供了一种模型-视图-控制器(MVC)架构。ASP.NET MVC 为构建 Web 应用程序提供了一种替代 ASP.NET Web Forms 的方案。它是 .NET 平台的一部分,用于构建、部署和运行 Web 应用程序。您可以借助 HTML、CSS 和 jQuery 开发 Web 应用程序和网站。 Java腳本等

通过此 ASP.NET MVC 教程学习 MVC,该教程涵盖了初学者 MVC 的所有基本概念:

为什么选择 ASP.NET MVC?

尽管网络表单非常成功, Microsoft 想到了开发ping ASP.NET MVC。 ASP.NET Web Forms 的主要问题是性能。

在一个 Web应用程序,定义绩效的主要有四个方面:-

  • 响应时间问题
  • 单元测试的问题
  • HTML 自定义
  • 代码隐藏类的可重用性

ASP.NET MVC 在上述各项指标上均表现出色。

MVC 版本历史

ASP.NET MVC1

  • 13 年 2009 月 XNUMX 日发布
  • 它运行在 .NET 3.5 上。
  • Visual Studio 2008中
  • 带有 WebForm 引擎的 MVC 模式架构
  • 主要功能包括 Html & 单元测试、Ajax 助手、路由等。

ASP.NET MVC2

  • 此版本于 10 年 2010 月 XNUMX 日发布
  • 可在 .NET 3.5、4.0 及更高版本上运行 Microsoft Visual Studio 2008中
  • 包含模板化助手、带自动脚手架的 UI 助手和可自定义模板等功能
  • 它支持 DataAnnotations 属性在客户端和服务器端应用模型验证

ASP.NET MVC3

  • 于 13 年 2011 月 XNUMX 日发布
  • 在.NET 4.0、XNUMX 上运行 Microsoft Visual Studio中 2010
  • N 的使用uGet 交付软件并允许您管理整个平台的依赖关系
  • 更好 Java支持脚本、jQuery 验证和 JSON 绑定
  • 它提供了诸如 Razor 视图引擎和增强型数据注释属性等功能,用于在客户端和服务器端进行模型验证。

ASP.NET MVC4

  • 此版本于 2012 年 XNUMX 月发布
  • 它在 .NET 4.0、4.5 以及 Visual Studio 2010 和 Visual Studio 2012 上运行
  • 默认项目模板的增强
  • 提供使用 jQuery Mobile 的移动项目模板、异步控制器的任务支持、捆绑、缩小等功能。

ASP.NET MVC5

  • 17 年 2013 月 XNUMX 日发布
  • 可在 .NET 4.5、4.5.1 以及 Visual Studio 2012 和 Visual Studio 2013 上运行。
  • 支持 MVC 中的属性路由

MVC的特点

  • 轻松且无摩擦的可测试性
  • 完全控制你的 HTML, Java脚本,以及 URLs
  • 利用现有的 ASP.NET 产品特性
  • ASP.NET 的新演示选项
  • 一种更简单的 ASP.NET 编程方式
  • 清晰的逻辑分离:模型、视图、控制器
  • 测试驱动开发
  • 支持并行开发

创建 MVC 应用程序时要记住的事项

以下是 ASP.NET MVC 教程中的一些有用内容,在创建 MVC 应用程序时您需要记住这些内容:

  • 您需要记住,ASP.NET MVC 并不能取代基于 ASP.NET Web Forms 的应用程序。
  • MVC应用程序的开发方法必须根据应用程序的需求和ASP.NET MVC提供的功能来确定,以满足具体的开发需求。
  • 与基于Web表单的应用程序相比,使用ASP.NET MVC的应用程序开发过程更加复杂。
  • 通过应用程序任务的分离,应用程序的可维护性总是更高。

MVC 架构模式

MVC 架构模式

MVC 是一种遵循关注点分离原则的软件架构模式。在该模型中,.NET 应用程序被分为三个相互关联的部分,分别称为模型(Model)、视图(View)和控制器(Controller)。

MVC 模式的目标是每个部分都可以被开发、相对独立地测试,也可以被组合起来以创建一个非常健壮的应用程序。

让我们详细了解一下它们:

型号

模型对象是应用程序的一部分,用于实现应用程序的逻辑 数据域。它检索模型状态并将其存储在数据库中。例如,产品对象可能从 数据库,对其进行操作。然后将信息写回到 SQL 服务器中的产品表中。

观看数

视图是用于显示应用程序用户界面 (UI) 的组件,在 MVC 中也称为视图模型。它显示基于模型数据创建的 .NET MVC 应用程序。

常见示例是项目表的编辑视图。它根据产品和对象的当前状态显示文本框、弹出窗口和复选框。

控制器

控制器处理用户交互,操作模型,并选择视图来渲染用户界面。在 .NET MVC 应用程序中,视图仅显示信息,控制器则使用 MVC 中的操作筛选器来管理和响应用户输入和交互。

例如,控制器管理查询字符串值并将这些值传递给模型。

Web 窗体与 MVC

参数 网页表单 MVC
型号 ASP.NET Web Forms 遵循事件驱动开发模型。 ASP.NET MVC 采用基于 MVC 模式的开发模型。
使用以来 自 2002 年起 它于 2009 年首次发布
支持视图状态 ASP.NET Web Form 支持视图状态,以便在客户端进行状态管理。 .NET MVC 不支持视图状态。
URL 类型 ASP.NET Web 表单具有基于文件的 URLs. 这意味着文件名存在于 URL它们必须以物理形式存在。 ASP.NET MVC 具有基于路由的功能 URL这意味着 URL重定向到控制器和操作。
句法 ASP.NET Web Forms 遵循 Web Forms 语法。 ASP.NET MVC 遵循可自定义语法。
视图类型 Web 表单的视图与此紧密相关。 Code (ASPX-CS)背后的逻辑。 MVC、视图和逻辑始终是分开保存的。
一致的外观和感觉 它具有主页以保持一致的外观。 ASP.NET MVC 具有用于实现一致外观的布局。
Code 雷乌斯能力 Web 表单提供用户控件以实现代码可重用性。 ASP.NET MVC 提供了局部视图以实现代码重用。
HTML 控件 Less 控制呈现的 HTML。 完全控制 HTML
状态管理 控制的自动状态管理。 手动状态管理。
TDD 支持 需要弱或定制的 TDD。 鼓励并包含测试驱动开发(TDD)。

ASP.NET MVC 的优点

  • 默认情况下高度可维护的应用程序
  • 它允许您替换应用程序的任何组件。
  • 更好地支持测试驱动开发
  • 由于模型、视图和控制器的划分,复杂的应用程序变得易于管理。
  • 通过前端控制器模式提供强大的路由机制
  • 通过消除视图状态和基于服务器的表单,可以更好地控制应用程序行为
  • .NET MVC 应用程序由庞大的开发人员和 Web 设计师团队提供支持。
  • 它提供了对应用程序行为的更多控制。它还使用优化的带宽来处理对服务器的请求

ASP.NET MVC 的缺点

  • 您无法像在 .aspx 页面中那样看到设计页面预览。
  • 每次都需要运行该程序才能看到它的实际设计。
  • 理解应用程序的流程可能具有挑战性
  • 实现起来相当复杂,因此对于小型应用来说它不是一个理想的选择
  • 学习 ASP.NET 的 MVC 很难,因为它需要对 MVC 模式有很深的理解

使用 ASP.NET MVC 的最佳实践

  • 如果代码庞大且复杂,请为模型创建一个单独的程序集,以避免任何不必要的情况。
  • 模型应该包括业务逻辑、会话维护、验证部分、数据逻辑部分。
  • VIEW不应该包含任何业务逻辑和会话维护,使用ViewData来访问View中的数据
  • 业务逻辑和数据访问绝不应该在控制器中实现。
  • 控制器只应负责准备和返回视图、调用模型、重定向到动作等。
  • 创建应用程序时,请从应用程序中删除演示代码(删除 AccountController)。
  • 仅使用特定的视图引擎从您的视图创建 HTML 标记,因为它是 HTML 和编程代码的组合。

常见问题

是的。GitHub Copilot 可以生成包含操作方法、路由属性和匹配的 Razor 视图的 Controller 类。 Rev在将生成的代码添加到项目之前,请检查其模型绑定和授权是否正确。

机器学习助手可以将 Web 表单页面映射到控制器和视图,将后台代码转换为操作方法,并标记 ViewState 的使用情况。开发人员仍然需要验证路由、模型绑定以及每个迁移的业务规则。

ViewData 是一个以字符串为键的对象字典,它在一次请求后仍然存在。ViewBag 是 ViewData 的动态封装。TempData 使用会话状态,并且在一次重定向后仍然存在,因此用于在两个连续请求之间传递数据。

路由引擎匹配传入的请求 URL 针对 RouteConfig 中注册的模板进行匹配。当模板匹配时,MVC 会选择控制器和操作,绑定任何参数,并调用该操作以返回 ActionResult。

Razor 是一种简洁的语法,用于将 C# 或 VB.NET 代码嵌入到 .cshtml 或 .vbhtml 文件中。它使用 @ 符号在 HTML 和代码之间切换,保持模板的可读性,并在运行时编译成快速、强类型的类。

经典的 ASP.NET MVC 运行在完整的 .NET Framework 上, Windows 仅限 ASP.NET Core MVC。ASP.NET Core MVC 运行于 .NET Core 之上。 Windows,Linux和 macOS它采用统一的控制器模型和 Web API,并提供内置的依赖注入。

使用 ASP.NET Identity 或外部提供程序,例如 Azure 使用 AD 进行登录。使用 [Authorize] 属性修饰控制器或操作以限制访问,并使用角色或策略参数来实现更细粒度的规则。

在测试方法中实例化 Controller,通过构造函数注入伪造或模拟服务,调用操作,并断言返回的 ActionResult 与预期的视图名称、模型或重定向目标匹配。

总结一下这篇文章: