ASP.NET Core 学习笔记(1)理解 MVC

1 MVC 概述

实际上在学习任何架构的时候都要理解它里面各种角色的职责,否则就可能会误用。比如在 iOS 编程时候的 MVC,如果不明白 Controller 的职责,则很容易将 ViewController 用作广义的 Controller,从而造成 ViewController 变得 Massive,主要原因是 ViewController 本身和 View 间就是紧耦合的,无法像标准 MVC 那样将 ViewController 作为广义的控制器来使用。

下面就来讲讲 ASP.NET 中的 MVC 架构模式,并看看它是如何将应用分离为三类主要构件的。

分离构件的好处是: 更好测试,更好维护,更好扩展。MVC 将交互(input)逻辑,业务逻辑,显示逻辑进行分离,从而降低程序元素间的耦合。在 MVC 中实际就已经规定了逻辑代码的归属:显示逻辑放在 View(这也是为什么 iOS 中需要把 ViewController 归入广义的 View 中的原因), 业务逻辑放在 Model,交互逻辑放在 Controller。

三类构件的职责说明:

  • Models(模型):建模即对客观事物进行抽象的过程,而模型就是建模的最终产物。在 APP 中,模型构件表示的是数据。模型类对象的主要功能是从数据库读取模型状态,或是将模型状态保存到数据库。

  • View:用于显示 UI 的组件,主要是将 Model 数据显示到 UI 上。

  • Controller:用于处理浏览器请求的组件。 它从模型取得数据,然后将数据交给 View 渲染,然后将 View 渲染的结果作为响应发送给浏览器。

ASP.NET Core 学习笔记(1)理解 MVC_第1张图片
MVC

2 实际操作

打开上一次建立的工程,在 Controller 文件夹上点右键新建一个 Web Controller。

在 Controller 中的 public 方法都是动作方法,默认的方法名就是其路径名,因为在 Startup 类的请求处理管线中就定义了 Route 的具体规则:

app.UseMvc(routes =>
{
    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
});

其中最后一个指定的是路径参数,且是可选的参数,在动作方法中添加一个名为 id 的参数即可接收。

方法的参数会自动对应到请求的 URL query String 中的参数,且不区分大小写。

默认情况下,Route 规则中将 Controller 的名称去除 Controller,就是路径。

参考文献

  1. 微软官方文档

你可能感兴趣的:(ASP.NET Core 学习笔记(1)理解 MVC)