ASP.NET Core – MVC
前言
在 ASP.NET Core – MVC vs Razor Page 里有提到 MVC. 它算是 WebAPI 的抽象.
但是通常 MVC 指的是比较传统的 Website, WebAPI 则是前后端分离的方案. Razor Page 则是替代 MVC 做 Website 的.
虽然说替代, 但是也不是 100%, 有些场景用 MVC 会比较直观. 这篇就特别来讲一下.
Get Started
dotnet new mvc -o TestMvc
folder 结构

可以 1 Controller 多个 Action, 每一个 Action 对一个 View, 或者 1 Controller 1 Action 对 1 个 View (看想怎样管理)
Controller 找 View

找 View 是有 default path 逻辑的, 也可以自定义. 但这里我就不多介绍了. 因为我使用场景很少, 所以都是直接写 path.
return View("~/PathToView/Index.cshtml", viewModel);
职责
Razor Page 的入口是 View .cshtml 然后引入 Model.cs (这个 Model 又包含了 Init 方法, 所以它算是 Model + Controller 概念)
MVC 的入口是 Controller + Action (.cs) 然后通过 ViewModel passing 资料给 View.
Razor Page View = MVC View
Razor Page Model Init = MVC Controller Action
Razor Page Model = MVC ViewModel
Route
上面讲了 Controller Action 和 View 的关系. 现在讲 Route.
Razor Pages 是通过 View 里面的 @page "url" 来定义 route 的.
MVC 则是直接在 Program.cs 里声明

pattern 可以写一些表达式, 上面的意思是
第一个 segment 对应 controller 名字,
第二个对应 action
第三个是一个 optional 的 RouteData
同时如果 3 个 segment 都是空, 那么就匹配 default 的 Home Index
使用场景
我遇到的场景是这样的

有 services 和 products.
一种做法是 /services, /categories 作为所以 services 和 product categories 页面
然后 /services/service1, /category1/product1 作为 service/product detail 页面.
但是这个项目不打算做 /services 和 product categories 页面.
而是直接让用户去 /service1 或者 /category1
service1 和 category1 是来自 SQL 的 data. route 匹配的写法就是 /{service-or-category}
然后 service 和 category 的页面是不同的设计.
这种情况下, 用 Razor Page 就不太合适了.
因为 same route 但是不同 View. 而 Razor Page 的特色是 1 个 View match 1 个 Route.
所以这里就可以用 MVC 的方式, Route match 了进入 Controller, 然后判断是 service 还是 category 然后输入 service view 或者 category view.
这个做法就比较直观了.
ASP.NET Core – MVC的更多相关文章
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- ASP.NET Core MVC 配置全局路由前缀
前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀.严格说其实不算是新特性,不过是Core MVC特有的. 应用背景 不知道大家在做 Web Ap ...
- ASP.NET Core MVC 中的 [Controller] 和 [NonController]
前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...
- ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API
原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderso ...
- ASP.NET Core 中文文档 第二章 指南(4.1)ASP.NET Core MVC 与 Visual Studio 入门
原文:Getting started with ASP.NET Core MVC and Visual Studio 作者:Rick Anderson 翻译:娄宇(Lyrics) 校对:刘怡(Alex ...
- ASP.NET Core 中文文档 第四章 MVC(01)ASP.NET Core MVC 概览
原文:Overview of ASP.NET Core MVC 作者:Steve Smith 翻译:张海龙(jiechen) 校对:高嵩 ASP.NET Core MVC 是使用模型-视图-控制器(M ...
- ASP.NET Core MVC TagHelper实践HighchartsNET快速图表控件-开源
ASP.NET Core MVC TagHelper最佳实践HighchartsNET快速图表控件支持ASP.NET Core. 曾经在WebForms上写过 HighchartsNET快速图表控件- ...
- ASP.NET Core MVC 在linux上的创建及发布
前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...
- ASP.NET Core - ASP.NET Core MVC 的功能划分
概述 大型 Web 应用比小型 Web 应用需要更好的组织.在大型应用中,ASP.NET MVC(和 Core MVC)所用的默认组织结构开始成为你的负累.你可以使用两种简单的技术来更新组织方法并及时 ...
- 解决ASP.NET Core Mvc文件上传限制问题
一.简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二.设置上传 ...
随机推荐
- 咬文嚼图式的介绍二叉树、B树/B-树
前言 因为本人天资愚钝,所以总喜欢将抽象化的事务具象化表达.对于各类眼花缭乱的树,只需要认知到它们只是一种数据结构,类似数组,切片,列表,映射等这些耳熟能详的词汇.对于一个数据结构而言,无非就是增删改 ...
- openStack核心组件的工作流程
目录 openStack核心组件的工作流程 1. Keystone 1.1 User 1.2 Credentials 1.3 Authentication 1.4 Token 1.5 Project ...
- 基于CFX的小型风电机组流场计算流程
一.Workbench界面框架 二.Geometry模块操作 1.打开Geometry模块,导入txt格式模型 File >> Import External Geometry File ...
- vue3时间转换插件-Moment.js的使用
vue3时间转换插件-Moment.js的使用 一.组件官网moment.js时间转换插件http://momentjs.cn/Moment Timezone 时区处理类库http://momentj ...
- django python 循环一个月的每一天
from datetime import datetime, timedelta def get_dates_in_month(year, month): start_date = datetime( ...
- oeasy教您玩转vim - 70 - # 折叠细节
折叠细节 回忆上次 上次我们讲的是折叠 折叠有很多options foldlevel - 显示折叠层次 foldcolumn - 折叠树宽度 foldmethod - 折叠方式 manual - ...
- 【Spring】04 注解实现自动装配
1.使用注解实现自动装配 注解的基础源于JDK1.5的新特性 在Spring2.5开始支持了注解功能 如何使用? 1.导入约束 xmlns:context="http://www.sprin ...
- NVIDIA的Isaac AMR产品介绍
NVIDIA的Isaac AMR是仓库自动运货机器人项目,说直白些就是一个AGV的小车,不过和传统的AGV不同,NVIDIA推出的这个产品是智能化的.传统AGV小车的运行代码都是写死的,直接把运行命令 ...
- 【转载】 tensorflow: 怎样找到对应的bazel 版本和安装
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u011279649/article/de ...
- 什么样的AI计算框架才是受用户喜欢的?
说明,本文是个人的一些胡想. 背景: AI计算框架现在从国外的百家争鸣过度到了国内百家争鸣的局面了.在7.8年前的时候,国外的AI计算框架简直是数不胜数,从14.15年前Nvidia公司的显卡需要手动 ...