SuperAPI AI 工具集

Razor Pages Patterns

通用与其它

查看项目

更新于 10-16 00:21

技能介绍

用途:在生成、评审或重构 Razor Pages 代码时,按生产级规范应用一致的架构模式,强调关注点分离、可测试性、安全与性能,面向 .NET 8+,启用最小托管与可空引用类型。

主要能力: 项目结构:页面置于 /Pages 并按业务分子目录,用 _ViewImports.cshtml 统一标签助手与引用,项目级启用可空引用类型;避免在同一项目混用 Razor Pages 与控制器,除非是混合应用。 PageModel 设计:构造函数注入依赖,处理程序方法(如 OnGetAsync、OnPostAsync)控制在 1–2 个,I/O 操作优先异步;慎用 [BindProperty],复杂表单显式绑定以防过度提交。 绑定与验证:在绑定模型上使用数据注解,服务端始终验证,POST 处理程序检查 ModelState.IsValid,无效时返回 Page() 重显错误;自定义验证可用 IValidatableObject 或 FluentValidation。 路由与导航:@page 配合路由模板,使用 <a asp-page> 等标签助手实现类型安全链接,采用 RedirectToPage 实现 PRG 模式防重复提交。 视图:.cshtml 仅做展示,无业务逻辑,可复用 partial,使用 asp-for 等标签助手与 @section 管理页面级资源,生产环境启用打包压缩。 安全:表单加入防伪令牌并在 POST 处理程序上验证,用 [Authorize] 与策略做授权,输入需防 XSS,启用 HSTS 与 HTTPS 重定向。 错误与日志:全局异常处理指向 /Error 页,注入 ILogger 记录异常,开发环境才显示堆栈,返回合适状态码。 性能:使用 [ResponseCache] 输出缓存,尽量避免会话状态、改用 TempData,优化数据库访问,可借助 dotnet-trace 或 MiniProfiler 剖析。 测试:用 Moq 对 PageModel 单测,用 WebApplicationFactory 做集成测试,Playwright 或 Selenium 做 UI 测试,处理程序与模型覆盖率目标 80%+。

使用方式:该技能仅在任务涉及 Razor Pages 时选择性应用,并与其他技能(如数据访问、依赖注入模式)交叉参考。文中提供 IndexModel 与对应视图的示例代码,可依此模式编写。

限制与反模式:避免上帝 PageModel、硬编码路由字符串、忽略 ModelState 验证、同步阻塞异步、静默吞异常、无白名单的过度绑定。文档未提及收费、价格或具体平台支持情况,相关细节暂未提供。参考资源包括 Microsoft Docs、OWASP Cheat Sheet 与 dotnet/aspnetcore 示例,工具涉及 FluentValidation、MiniProfiler、xUnit。