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 并不会冲突, 是可以一起用的哦.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期