.NET Core Razor Pages中GET请求时Display Template页面Model为Null
问题分析与解决方案
问题根源
你的OnGet方法存在变量遮蔽错误:方法内部重新声明了局部变量UserEditSP,导致你实际是在创建一个仅在方法内部生效的局部实例,而非给页面模型类的同名属性赋值。方法执行完毕后局部变量被销毁,页面模型的UserEditSP属性自然保持为null。
修复代码
修改OnGet方法,移除局部变量声明,直接操作模型的属性:
public IActionResult OnGet() { // 直接为模型属性赋值,不再声明局部变量 UserEditSP = new UserEditSP(); UserEditSP.NewPassword = "NewPwd"; StringTest = "Test"; return Page(); }
补充说明
[BindProperty]特性负责POST请求的表单数据绑定,所以POST场景下属性能正常获取值,但GET请求需要手动初始化模型属性。- 你的
OnPost方法同样存在变量遮蔽问题,只是POST请求的模型绑定会覆盖局部变量的影响,导致你误以为功能正常。建议同步修复OnPost方法以保持代码一致性:
public IActionResult OnPost() { UserEditSP = new UserEditSP(); UserEditSP.NewPassword = "NewPwd"; StringTest = "Test"; return Page(); }
内容的提问来源于stack exchange,提问作者MicJarek
相关产品推荐
相关产品推荐

