控制器向视图传递Student列表时Model为空,报NullReferenceException如何解决?
问题原因及解决步骤
核心问题是视图中的@page标记与MVC控制器模式冲突:@page是Razor Pages专属标记,添加后该视图会被识别为独立的Razor Page,不再接收MVC控制器传递的Model,导致Model为null,触发NullReferenceException。
解决步骤如下:
移除视图顶部的
@page标记
MVC视图不需要这个标记,删除后视图会恢复为MVC模式,正常接收控制器传递的Model。修正Model的命名空间匹配
视图中@model声明的命名空间要与Student类的实际命名空间一致:
你的Student类在Models命名空间下,因此视图中的Model声明应改为:@model List<Models.Student>(如果项目根命名空间是
MyApp,则改为@model List<MyApp.Models.Student>,确保与类的完全限定名一致)确认控制器的命名空间引用
在控制器类顶部添加必要的命名空间引用,确保SomeStudents.Students能被正确识别:using Data; using Models;
修改后的视图代码示例:
@model List<Models.Student> <div> @{ string sHtml = TestPageView.GetHtml(Model); } @Html.Raw(sHtml) </div>
完成以上修改后,控制器传递的学生列表就能正确绑定到视图的Model,访问时就不会触发空引用异常了。
内容的提问来源于stack exchange,提问作者InteXX
相关产品推荐
相关产品推荐

