解释 ASP.NET 中的 MVC 模式


MVC 代表模型-视图-控制器。它是一种用于软件应用程序的架构模式。Trygve Reenskaug 于 1979 年提出了该模式,用于开发交互式应用程序。在这种模式下,应用程序被划分为三个组件:模型、视图和控制器。

模型

模型维护应用程序的状态。状态可以是瞬态的,即存储在内存中,也可以是持久化的,即保存到数据库中。

模型不仅仅是持有状态。它对数据执行业务逻辑,对数据强制执行业务规则,并且可以使用领域模型来操作数据。模型充当守门人和数据存储。

视图

视图根据模型中的数据生成并显示用户界面。在收到请求后,模型从数据库或内存中获取数据,处理它,并将其传递给视图。然后,视图决定如何将该数据呈现给用户。

控制器

控制器协调应用程序流程,并在视图和控制器之间充当中间人。

控制器接收请求。根据请求的内容,控制器使用模型构建数据,然后将其转发给视图进行显示。

这是一个说明 Web 应用程序上下文中 MVC 模式的图表。箭头上的数字表示用户请求的处理顺序。

  • 用户与 Web 应用程序交互,该应用程序向应用程序发送 HTTP 请求。此请求由控制器拦截和处理。

  • 控制器使用来自请求的数据来调用领域模型。

  • 领域模型从数据库(或外部资源)获取数据,强制执行业务规则并根据业务逻辑处理数据

  • 处理后的数据返回给控制器。

  • 控制器将数据传递给视图。视图使用 HTML 模板和数据生成用户界面。

  • 然后,视图将生成的 HTML 发送到 Web 应用程序,然后由浏览器显示。

MVC 模式确保了“关注点分离”原则。例如,视图从不处理传入数据,模型不关心如何显示数据,控制器不执行任何业务逻辑。每个组件都有其明确定义的职责。这使得应用程序易于开发和维护,因为它随着复杂性的增加而增长。

最初,MVC 模式是为了简化在桌面运行的传统 GUI 应用程序的开发而开发的。后来它被用于 Web 应用程序。Ruby on Rails 框架推广了 MVC 模式,后来被其他框架采用。

在 ASP.NET 应用程序中,MVC 组件由 C# 类处理。例如,这是一个表示用户的模型类。

示例

现场演示

// Models/User.cs
namespace app.Models{
   public class User{
      public int ID { get; set; }

      public string Name { get; set; }

      public string Salary { get; set; }
   }
}

渲染用户的视图可能如下所示

// Views/User.cshtml
<div class="user">
   <div class="name">
      <a href="/users/@user.ID">@user.Name</a>
   </div>

   <div class=salary>
      @user.Salary
   </div>
</div>

最后,这是一个通过获取用户模型为用户构建视图的控制器。

// Controllers/UserController
namespace app.Controllers{
   public class UserController : BaseController{
      public IActionResult User(int id){
         // Get the user from the database
         User user = _service.GetUser(id);

         // Render the user.cshtml view, by providing the user model
         return View(user);
      }
   }
}

更新于: 2021-06-22

251 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告