Services.AddRazorPages解释

把“Razor Pages”框架所需的所有服务**(路由、模型绑定、验证、缓存、授权等)一次性注册到 ASP.NET Core 的依赖注入容器,让你的 .cshtml 页面真正能跑起来。**

  1. 它到底干了啥(内部流程)

表格
复制
注册的服务作用
RazorPagesOptions 配置根目录、约定、过滤器
IRazorPageFactoryProvider 把 .cshtml 编译成可执行类型
IPageHandlerMethodSelector 挑哪个 OnGet/OnPost 方法
IPageModelActivatorProvider 实例化 PageModel
ModelMetadataProvider + 验证 绑定 & 校验你的 BindProperty
授权、缓存、 antiforgery 配套中间件就绪
一句话:你写个 Index.cshtml + Index.cshtml.cs,全靠这些幕后服务才能被访问、绑定、验证、渲染。

  1. 最小启动示例

csharp
复制
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages(); // ← 关键一行

var app = builder.Build();

app.MapRazorPages();   // 注册路由
app.Run();
 
目录结构:
复制
/Pages
   Index.cshtml
   Index.cshtml.cs
 

  1. 常用配置链

csharp
复制
builder.Services.AddRazorPages(options =>
{
    options.RootDirectory = "/Features";      // 改根目录
    options.Conventions.AddFolderApplicationModelConvention(
        "/Admin", model => model.Filters.Add(new AuthorizeFilter()));
});
 

  1. 与 MVC 的区别

表格
复制
特点Razor PagesMVC
URL→文件 默认一一对应(/PrivacyPrivacy.cshtml 自定义路由
控制器 PageModel 合并到页面 独立 Controller
学习曲线 轻量、无控制器概念 更灵活、分层清晰

  1. 一句话总结
    AddRazorPages() 就是:
    “把 Razor Pages 所需的编译、路由、模型绑定、验证、授权等全套服务一次性塞进 DI 容器,让你的 .cshtml + PageModel 真正能被访问和渲染。”
posted @ 2025-10-10 11:28  yinghualeihenmei  阅读(4)  评论(0)    收藏  举报