ASP.Net Core Razor Pages页面加载时OnGet()未调用,求类初始化方案
ASP.NET Core Razor Pages OnGet() 未调用排查方案
确认页面与PageModel绑定
检查Index.cshtml顶部是否添加了正确的@model指令:@model SafetyApp.Pages.IndexModel缺少该指令会导致页面无法关联后台的IndexModel,OnGet()自然不会触发。
验证依赖注入配置
确保在Program.cs(.NET 6+)或Startup.cs中已注册SafetyService:// Program.cs示例 builder.Services.AddScoped<SafetyService>();未注册服务会导致构造函数注入失败,页面初始化异常,间接阻止OnGet()执行。
检查OnGet方法签名
当前public void OnGet()签名合法,但可临时修改为带返回值的形式排查:public IActionResult OnGet() { var inspectionType = _safety.GetInspectionType(); return Page(); }同时确认没有重载的OnGet方法(如
OnGetAsync)导致路由匹配冲突。排查路由与访问路径
- 确认访问路径正确:默认情况下,Index页面可通过根路径(
/)或/Index访问。 - 检查IndexModel上是否存在
[Route]属性,自定义路由可能导致路径不匹配。
- 确认访问路径正确:默认情况下,Index页面可通过根路径(
调试与日志排查
- 在构造函数和OnGet()开头添加断点,确认构造函数是否执行:若构造函数未进入,优先排查依赖注入或页面绑定问题;若构造函数执行但OnGet()未触发,检查请求类型(页面加载应为GET)或路由配置。
- 查看浏览器网络请求状态,若返回404/500,对应排查路由或服务异常;查看控制台是否有JS错误影响页面加载。
检查过滤器与中间件
排查是否存在自定义IPageFilter、IAsyncPageFilter或全局中间件,是否在OnGet()执行前拦截了请求。
内容的提问来源于stack exchange,提问作者Mr Neptune
相关产品推荐
相关产品推荐

