MVC概述

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




asp.net core 中安装mvc

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

依赖注入


配置服务将对象注入到容器

控制器构造时通过依赖注入从容器获取对象

模型

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

控制器

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

视图

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

https://localhost:44369/Home/Details 默认路径下没有发现视图

视图发现


建议使用绝对路径

从控制器传递数据到视图

ViewData和ViewBag




强类型视图

视图模型

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

视图模型Dto
控制器

视图

布局页面_Layout.cshtml

简单的视图布局结构

添加布局页面_Layout.cshtml

使用视图布局页 Layout = “~/Views/Shared/_Layout.cshtml”;

布局页面Sections

布局页中的Section设置,默认不使用该Section Scripts节点

视图页使用了布局页中Section Scripts节点

视图页没有使用了布局页中Section Scripts节点

视图开始_ViewStart.cshtml

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

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

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

视图导入_ViewImports.cshtml

视图和页面可以使用 Razor 指令导入命名空间和使用依赖关系注入。 由多个视图共享的指令可以在通用 _ViewImports.cshtml 文件中进行指定。

如果在文件层次结构中找到多个 _ViewImports.cshtml 文件,指令的合并行为是:

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

路由

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

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

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

包管理工具

LibMan
添加客户端库
选择库添加

生成库

管理库

标记帮助程序TagHelper

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

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

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

模型绑定

ASP.NET Core 中的模型绑定

添加验证

ASP.NET Core MVC 和页面中的模型验证
在模型属性上添加验证属性
ModelState.IsValid 验证判断

显示验证提示

ASP.NET Core MVC相关推荐

  1. 关于MVC与三层架构、个人总结网上杂七杂八得出的最终成果、asp.net (core) MVC、JavaWeb的MVC

    阅读本文必须明白的事情 首先需要明白的是不同语言实现的MVC与三层架构对应的层是不一样的!!! 拿.net来说,.net实现MVC与其他语言的MVC具体实现是不同的,asp.net MVC与 MVC ...

  2. ASP .NET Core MVC Entity Framework 旧书交易网站

    代码在GitHub仓库:zhang0peter/Old-Book-Shop-System: Old Book Shop System ASP .Net Core MVC MySQL e-commerc ...

  3. ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)视图母版页教程 ASP.NET Core MVC (Razor)带有Section的视图母版页教程 ASP.NET Cor ...

  4. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

    索引: 目录索引 Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Ch ...

  5. asp.net core mvc上传大文件解决方案

    asp.net core mvc上传大文件解决方案 参考文章: (1)asp.net core mvc上传大文件解决方案 (2)https://www.cnblogs.com/eggtwo/p/988 ...

  6. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  7. ASP.NET Core MVC – Caching Tag Helpers

    ASP.NET Core Tag Helpers系列目录,这是第二篇,共五篇: ASP.NET Core MVC – Tag Helpers 介绍 ASP.NET Core MVC – Caching ...

  8. asp.net core mvc权限控制:在视图中控制操作权限

    在asp.net core mvc中提供了权限验证框架,前面的文章中已经介绍了如何进行权限控制配置,权限配置好后,权限验证逻辑自动就会执行,但是在某些情况下,我们可能需要在代码里或者视图中通过手工方式 ...

  9. ASP.NET Core MVC 源码学习:详解 Action 的匹配

    前言 在 上一篇 文章中,我们已经学习了 ASP.NET Core MVC 的启动流程,那么 MVC 在启动了之后,当请求到达过来的时候,它是怎么样处理的呢? 又是怎么样把我们的请求准确的传达到我们的 ...

  10. asp.net core mvc权限控制:分配权限

    1,分配权限到角色:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了RoleManager类,类中提供了把权限分配到角色的方法: Task&l ...

最新文章

  1. 有趣的 Mysql 存储引擎
  2. ffmpeg优化mp4以及hls参数设置
  3. java 双声道音频_Android 播放音频如何实现双声道效果
  4. nginx 学习记录:IP+端口号配置网站、隐藏端口号、自签名证书配置Https、强制Https、自定义404
  5. 官方client php api接口日记
  6. FIR数字滤波器的FPGA实现
  7. python 执行cmd命令 改变目录_Python 改变当前工作目录
  8. ECharts图表组件与FusionCharts图表组件对比
  9. matlab中在xls单元格中填充颜色,!Excel中如何根据某一列的值对整行进行颜色填充?...
  10. 抖音小程序微信支付php,抖音头条小程序微信支付开通绑定最全教程!
  11. 笔记本计算机在桌面显示,笔记本电脑显示桌面图标怎么样设置
  12. keil更改黑色背景颜色
  13. Hbase篇(7)-Region的分裂
  14. 医疗器械生物相容性评价
  15. 艺赛旗RPA 第三方库系列(一):如何调用 Python 第三方库
  16. 暴力枚举题:平面上的点与外心
  17. 城市隧道水位监测与预警系统
  18. 在IDEA中使用搜狗输入法输入文字是繁体字,但是在其他地方输入文字是正常的简体字
  19. 重要消息!国务院明确电子票允许作为报销凭证
  20. usb无线网卡安装在服务器上,如何安装usb无线网卡驱动,详细教您如何安装电脑usb驱动...

热门文章

  1. 二、scores = “小红-86,小黄-90,小蓝-78,小绿-80,小黑-84“ 八、根据一个收件人列表,输出 姓名:xxx 电话:xxx 收货地址:xxx 姓名:xxx 电话:xxx 收货
  2. 一篇文章带你搞懂进化树
  3. 利用Python对栅格数据进行EOF并输出nc文件(含EOF分解)
  4. 第四章:经典量化策略集锦(第四篇:进军交易系统,从 Dual Thrust 中学“趋势”)
  5. 怎样用FLASHFXP 在服务器空间复制文件到另一个目录
  6. stm32显示bmp图片
  7. 淘宝网简易实现, Html + css + Javascript + Jquery +Swiper +Vue, 期末js大作业
  8. 无人驾驶传感器之超声波
  9. 对于攒机的一些建议及经验之谈
  10. 清华毕业后,一个成藤校教授,一个为比尔·盖茨花钱,这对最强闺蜜是如何炼成的?...