.NET Razor页面Model值绑定不显示问题求助
解决Razor页面@Model绑定值不显示的问题
以下是几个必查的关键点,按优先级排序:
1. 修正OnGet方法的大小写
Razor页面的生命周期方法要求PascalCase命名,小写的onGet不会被.NET框架自动调用,导致Heading属性从未被赋值。
错误代码:
public void onGet() // 小写开头,框架不识别 { Heading = "James Bond Actors"; }
修正后:
public void OnGet() // 首字母大写,框架会自动执行 { Heading = "James Bond Actors"; }
2. 确保Heading属性是public
如果Heading的访问修饰符是private或protected,Razor页面无法访问该属性,导致绑定为空。
正确的属性定义:
public class IndexModel : PageModel { // 必须是public才能被Razor页面访问 public string Heading { get; set; } public void OnGet() { Heading = "James Bond Actors"; } }
3. 确认Razor页面的@model指令正确
检查.cshtml文件顶部的@model指令,是否正确引用了你的PageModel类(包括命名空间)。
示例(假设PageModel在YourProjectName.Pages命名空间下):
@page @model YourProjectName.Pages.IndexModel <h1>@Model.Heading</h1>
4. 验证PageModel与Razor页面的文件名匹配
确保PageModel类的文件名是[页面名].cshtml.cs,比如Razor页面是Index.cshtml,对应的代码文件必须是Index.cshtml.cs,且类名为IndexModel(继承自PageModel)。
完成以上检查后,重新执行dotnet build和dotnet run,页面应该能正常显示绑定的内容。
内容的提问来源于stack exchange,提问作者korflool
相关产品推荐
相关产品推荐

