.NET MVC的Razor支持与Razor Pages区别及相关概念疑问
ASP.NET Core MVC与Razor Pages相关疑问解答
疑问1:对支持Razor的.NET MVC和Razor Pages的模式理解是否正确
你的理解八九不离十,补充几个细节校准:
- 带Razor的.NET MVC是标准的MVC(模型-视图-控制器)架构:请求经过路由匹配到控制器的Action方法,所有业务逻辑、数据组装都在控制器层完成,最后把Model传给Razor视图渲染页面,视图本身只负责渲染相关的逻辑,没有绑定的后置代码,也不会直接处理业务请求。
- Razor Pages是轻量化的MVVM模式实现,每个
.cshtml页面对应同名的.cshtml.cs后置代码文件(即PageModel类,相当于VM层),页面的GET/POST等请求处理逻辑直接写在PageModel里,不需要单独定义控制器,非常适合页面逻辑相对独立的场景。
疑问2:是否真实存在“.NET MVC razor pages”这个技术概念
不存在官方定义的这个技术概念,你同事的说法属于混淆了两个独立技术栈:
- Razor Pages是ASP.NET Core 2.0版本才新增的独立页面编程模型,和我们常说的MVC(控制器+视图)是平级关系,二者都构建在ASP.NET Core的核心能力之上,底层共享Razor语法解析、模型绑定、验证这些公共组件,但属于完全不同的开发范式,没有从属关系。
- 你同事大概率是把“支持Razor语法的.NET MVC”和“Razor Pages”两个概念混在一起说的口误,业内没有这个通用叫法。
疑问3:如何理解微软官方文档中“ASP.NET Core supports both MVC (Views or Page based)”的表述
这里是官方文档的表述简化,很容易误导人,实际含义要拆分看:
- 这里的“MVC”指的是广义的ASP.NET Core MVC技术家族,不是我们通常说的狭义的MVC架构模式。
- 括号里的“基于视图(Views based)”就是狭义的MVC模式:控制器+视图的架构,路由指向控制器的Action方法。
- 括号里的“基于页面(Page based)”就是Razor Pages:以页面为单元的编程模型,路由直接匹配页面文件的路径。
- 微软把二者归到同一个大的MVC技术家族下,核心原因是二者底层共享了MVC架构的核心能力:路由、模型绑定、验证、过滤器这些基础组件是完全同一套,只是上层给开发者提供的编程抽象不同,所以才有了这个表述,并不是说狭义的MVC模式存在“基于页面”的实现。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

