ASP.NET Core MVC

MVC概述

ASP.NET Core MVC 是使用模型-视图-控制器(Model-View-Controller)设计模式构建网页应用与 API 的丰富的框架。

ASP.NET Core MVC_第1张图片

ASP.NET Core MVC_第2张图片
ASP.NET Core MVC_第3张图片

ASP.NET Core MVC_第4张图片
ASP.NET Core MVC_第5张图片
ASP.NET Core MVC_第6张图片

asp.net core 中安装mvc

  1. services.AddControllersWithViews();//添加mvc控制器和视图服务
  2. endpoints.MapControllerRoute(//终结点默认路由

ASP.NET Core MVC_第7张图片

依赖注入

ASP.NET Core MVC_第8张图片
配置服务将对象注入到容器
ASP.NET Core MVC_第9张图片

ASP.NET Core MVC_第10张图片控制器构造时通过依赖注入从容器获取对象
ASP.NET Core MVC_第11张图片

模型

MVC 应用中的模型代表了应用的状态和业务逻辑或其可以展现的一些操作。业务逻辑应该封装在模型,连同应用持久化状态实现逻辑。强类型视图一般使用特别设计的视图模型(ViewModel)类型,它包含了视图显示需要的数据;控制器将创建并从模型填充这些视图模型。

控制器

控制器是承载用户交互、模型运转、并最终选择视图进行渲染的组件。在 MVC 应用中,视图只显示信息;控制器处理并对用户输入和交互做出响应。在 MVC 模式,控制器是最初的入口,负责选择同哪一个模型类型协作和选择哪一个视图用来呈现
ASP.NET Core MVC_第12张图片

视图

视图负责在用户界面呈现内容。它们使用 Razor 视图引擎在 HTML 标记中嵌入 .NET 代码。视图中应仅包含少量的逻辑,而这些逻辑应该是与呈现内容相关的。如果你发现需要在视图文件中完成大量的逻辑任务,以便从复杂的模型展示数据,请考虑使用视图组件视图模型、或视图模板来简化视图。

https://localhost:44369/Home/Details 默认路径下没有发现视图
ASP.NET Core MVC_第13张图片

ASP.NET Core MVC_第14张图片

视图发现

ASP.NET Core MVC_第15张图片
建议使用绝对路径
ASP.NET Core MVC_第16张图片
ASP.NET Core MVC_第17张图片

从控制器传递数据到视图

ViewData和ViewBag

ASP.NET Core MVC_第18张图片
ASP.NET Core MVC_第19张图片
ASP.NET Core MVC_第20张图片

ASP.NET Core MVC_第21张图片
强类型视图
ASP.NET Core MVC_第22张图片ASP.NET Core MVC_第23张图片
ASP.NET Core MVC_第24张图片

视图模型

模型对象无法满足视图所需的所有数据时,就需要使用视图模型ViewModels了。DTO是数据传输对象,用来组合对象数据为视图提供唯一强类型模型对象,专门服务视图的模型即ViewModels。

视图模型Dto
ASP.NET Core MVC_第25张图片控制器
ASP.NET Core MVC_第26张图片
视图
ASP.NET Core MVC_第27张图片

布局页面_Layout.cshtml

简单的视图布局结构ASP.NET Core MVC_第28张图片
ASP.NET Core MVC_第29张图片
添加布局页面_Layout.cshtml
ASP.NET Core MVC_第30张图片
使用视图布局页 Layout = “~/Views/Shared/_Layout.cshtml”;
ASP.NET Core MVC_第31张图片

ASP.NET Core MVC_第32张图片

布局页面Sections

ASP.NET Core MVC_第33张图片布局页中的Section设置,默认不使用该Section Scripts节点
ASP.NET Core MVC_第34张图片

视图页使用了布局页中Section Scripts节点
ASP.NET Core MVC_第35张图片
视图页没有使用了布局页中Section Scripts节点
ASP.NET Core MVC_第36张图片

视图开始_ViewStart.cshtml

添加视图开始,_ViewStart.cshtml 通常直接放置在 /Pages(或 /Views)文件夹中。 指定所有视图都将使用 _Layout.cshtml 布局,不需要每个视图文件添加引用 Layout = “~/Views/Shared/_Layout.cshtml”;

指定的布局可以使用完整路径(例如 /Pages/Shared/_Layout.cshtml 或 /Views/Shared/_Layout.cshtml)或部分名称(示例:_Layout)。 如果提供了部分名称, Razor 视图引擎将使用其标准发现进程搜索布局文件。 首先搜索处理程序方法(或控制器)所在的文件夹,然后搜索 Shared 文件夹。

ASP.NET Core MVC_第37张图片ASP.NET Core MVC_第38张图片

视图加载布局页加载顺序优先从视图文件直接指定布局页,再依次从最靠近视图文件的文件夹中加载_ViewStart.cshtml文件来指定布局页。

视图导入_ViewImports.cshtml

视图和页面可以使用 Razor 指令导入命名空间和使用依赖关系注入。 由多个视图共享的指令可以在通用 _ViewImports.cshtml 文件中进行指定。
ASP.NET Core MVC_第39张图片
如果在文件层次结构中找到多个 _ViewImports.cshtml 文件,指令的合并行为是:

  • @addTagHelper``@removeTagHelper:按顺序全部运行
  • @tagHelperPrefix:最接近视图的文件会替代任何其他文件
  • @model:最接近视图的文件会替代任何其他文件
  • @inherits:最接近视图的文件会替代任何其他文件
  • @using:全部包括在内;忽略重复项
  • @inject:针对每个属性,最接近视图的属性会替代具有相同属性名的任何其他属性

路由

路由的主要作用是映射URL,而不需要关注服务器的物理文件结构,提高安全性,同时规范了URL请求,有利于搜索引擎优化。在Asp.NetCore中,注册路由方式有两种:

  • 模板路由注册:适合应用于MVC页面项目,相对于来说,使用模板的形式更加方便,约定大于配置,统一URL;
  • 特性路由注册(RouteAttribute):适合应用于API项目,针对于不同业务路由会进行定制,特性标注显得更加便捷;

参考:
ASP.NET Core 中路由到控制器操作
跟我一起学.NetCore之路由的最佳实现

包管理工具

LibMan
ASP.NET Core MVC_第40张图片添加客户端库
ASP.NET Core MVC_第41张图片选择库添加
ASP.NET Core MVC_第42张图片
生成库
ASP.NET Core MVC_第43张图片
管理库
ASP.NET Core MVC_第44张图片
ASP.NET Core MVC_第45张图片

标记帮助程序TagHelper

ASP.NET Core MVC_第46张图片

内置 ASP.NET Core 标记帮助程序

  • 定位点标记帮助程序
  • 缓存标记帮助程序
  • 组件标记帮助程序
  • 分布式缓存帮助程序
  • 环境标记帮助程序
  • 表单标记帮助程序
  • 窗体操作标记帮助程序
  • 图像标记帮助程序
  • 输入标记帮助程序
  • 标签标记帮助程序
  • 链接标记帮助程序
  • 部分标记帮助程序
  • 脚本标记帮助程序
  • 选择标记帮助程序
  • 文本区标记帮助程序
  • 验证消息标记帮助程序
  • 验证摘要标记帮助程序

ASP.NET Core 中的标记帮助程序

模型绑定

ASP.NET Core 中的模型绑定
ASP.NET Core MVC_第47张图片
ASP.NET Core MVC_第48张图片

添加验证

ASP.NET Core MVC 和页面中的模型验证
在模型属性上添加验证属性
ASP.NET Core MVC_第49张图片ModelState.IsValid 验证判断
ASP.NET Core MVC_第50张图片

显示验证提示
ASP.NET Core MVC_第51张图片

你可能感兴趣的:(mvc,ASP.NET,Core)