ASP.NET Core – MVC vs Razor Page
前言
早年只有 MVC, Razor Page 是后来才出现的.
一开始其实我很看不起 Razor Page, MVC 能做的东西为什么要搞多一个 Razor Page 来做呢?
但我还是尝试用了起来, 这篇就聊一下 2 者的使用体验.
相似之处
2 者都有 .cshtml 来写 html
2 者都有 .cs 来写 c# (当然你要在 .cshtml 写也不是不可以)
区别
我个人感觉最大的区别就是在 route 的匹配上.
MVC 的流程是, URL -> Controller (.cs) -> View (.cshtml)
URL 寻找 Controller 有一个 mapping 的概念 (通常在 startup 配置)
Controller 寻找 View 又有一个 mapping (default 是 2 个 folders, 一个是 Controllers, 一个是 VIews, 这个匹配方式是可以换的)
Razor 的流程是 URL -> .cshtml -> Model (.cs)
URL 寻找 .cshtml (default 是依据 folder 结构, 这个是可以换的)
找到 .cshtml 之后再链接到 Model (.cs)
使用体验
如果是做网站的话,我会比较喜欢用 folder 的结构, 所以 razor page 更加合适.
就有点回到以前写 .html 的那种感觉. 很直观简单.
我目前只有一种情况是需要用到 MVC 的. 就是做 404 页面的时候
因为我有做 amp page, 但是 UseStatusCodePageWithReExceute 只能静态的写一个路径
app.UseStatusCodePagesWithReExecute("/NotFound");
用 Razor Page 的话, 这个 path 会直接找到 .cshtml, 那就完了.
因为 amp/whatever 必须返回 amp/NotFound 内容
而 /whatever 则是去到 /NotFound
这个时候最好的解决方法就是用 MVC, 通过 Controller 就可以选择要返回 amp view 还是 normal view 了.
最后, 其实 MVC 和 Razor Page 并不会冲突, 是可以一起用的哦.
ASP.NET Core – MVC vs Razor Page的更多相关文章
- ASP.NET Core MVC里面Razor如何获取URL参数
原文:ASP.NET Core MVC里面Razor如何获取URL参数 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...
- ASP.NET Core MVC的Razor视图中,使用Html.Raw方法输出原生的html
我们在ASP.NET Core MVC项目中,有一个Razor视图文件Index.cshtml,如下: @{ Layout = null; } <!DOCTYPE html> <ht ...
- Asp.net core 学习笔记 Razor Page
更新 2019-04-27 最近做了更多的 research 发现微软视乎有意发展 razor page. razor page 的定位是 mvvm, 现在还有个叫 blazor 的东西, 类似用 c ...
- ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MV ...
- ASP.NET Core 入门笔记6,ASP.NET Core MVC 视图传值入门
摘抄自:https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-mvc-view-renderdata.html 如有侵权请告知 一.前言 1.本教 ...
- 从零开始实现ASP.NET Core MVC的插件式开发(八) - Razor视图相关问题及解决方案
标题:从零开始实现ASP.NET Core MVC的插件式开发(八) - Razor视图相关问题及解决方案 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun ...
- 创建ASP.NET Core MVC应用程序(1)-添加Controller和View
创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...
- ASP.NET Core MVC – Tag Helper 组件
ASP.NET Core Tag Helpers系列目录,这是第五篇,共五篇: ASP.NET Core MVC – Tag Helpers 介绍 ASP.NET Core MVC – Caching ...
- 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.Changing vi ...
- 你所不知道的ASP.NET Core MVC/WebApi基础系列(一)
前言 最近发表的EF Core貌似有点多,可别误以为我只专攻EF Core哦,私下有时间也是一直在看ASP.NET Core的内容,所以后续会穿插讲EF Core和ASP.NET Core,别认为你会 ...
随机推荐
- AI驱动音乐创新,网易数帆X云音乐刷新MIREX世界纪录 网易数帆 网易数帆
在近期揭榜的2021国际音频检索评测大赛(MIREX)上,网易数帆易智语音团队携手网易云音乐音视频实验室,凭借生产级AI技术创新能力,在歌词识别和歌单识别两个赛道大幅打破世界纪录夺得冠军. MIREX ...
- 为什么StampedLock会导致CPU100%?
StampedLock 是 Java 8 引入的一种高级的锁机制,它位于 java.util.concurrent.locks 包中.与传统的读写锁(ReentrantReadWriteLock)相比 ...
- 解读GaussDB(for MySQL)灵活多维的二级分区表策略
本文分享自华为云社区<GaussDB(for MySQL)创新特性:灵活多维的二级分区表策略>,作者:GaussDB 数据库. 背景介绍 分区表及二级分区表的功能,可以让数据库更加有效地管 ...
- CF1929B Sasha and the Drawing 题解
CF1929B 题意 给定一个 \(n\times n\) 的正方形,已知正方形最多有 \(4\times n-2\) 条对角线,要求要有至少 \(k\) 条对角线经过至少一块黑色方格,求至少要将几条 ...
- c++17 using继承所有构造函数
//使用using继承所有的构造函数 #include "tmp.h" #include <iostream> using namespace std; struct ...
- ThinkPHP一对一关联模型的运用(ORM)
一.序言 最近在写ThinkPHP关联模型的时候一些用法总忘,我就想通过写博客的方式复习和整理下一些用法. 具体版本: topthink/framework:6.1.4 topthink/think- ...
- 嵌入式开发SQLite 快速掌握
SQLite是什么 SQLite又称(RDBMS)它 是本地数据库,可以用在手机,嵌入式设备的精简数据库和大名的mysql 一样的数据库存,只是可以理解为它是精简版,事务处理.表连接.索引.触发器等都 ...
- k8s 环境搭建(2)
安装docker组件 配置本地源或者自带的网络源2选1 1.切换镜像源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce ...
- 【Java】【常用类】Date 日期类
java.util.Date java.sql.Date 创建日期对象和打印结果 public class DateTest { public static void main(String[] ar ...
- 【Java】MuliThread 多线程
程序Program 是完成特定人,用某种语言编写的一组指令集合,即一段静态代码,静态对象 进程Process 是程序的一次执行过程,可以是一个正在执行的程序 - 程序是静态的,进程是动态的 - 进程是 ...