我正在尝试从存储过程中获取课程和作业。使用结果填充我的ViewModel,并在视图中显示它们,并在其路线下显示每个课程的所有分配。存储过程返回项目列表。我得到一个Null引用异常。
我的控制器代码:
var CourseNames = storedProcedure.getCourseNames(User.Identity.Name);
var CoursesView = new CoursesViewModel();
foreach (var CourseName in CourseNames)
{
CoursesView.CourseNames.Add(CourseName);
var AssignmentNames = storedProcedure.getAssignmentNames(User.Identity.Name, CourseName);
foreach (var AssignmentName in AssignmentNames)
{
CoursesView.AssignmentNames.Add(AssignmentName);
}
}
return View(CoursesView);
CoursesView.CourseNames.Add(CourseName);出错线
我的ViewModel代码:
public class CoursesViewModel
{
public List<string> CourseNames { get; set; }
public List<string> AssignmentNames { get; set; }
}
我的观看代码:
<table>
@foreach (var item in Model)
{
<tr><th>@Model.CourseNames</th></tr>
<tr><td>@Model.AssignmentNames</td></tr>
}
</table>
答案 0 :(得分:0)
假设您为了简洁而没有缩减代码,我相信问题是您的CoursesViewModel类没有初始化List属性,因此当您在其中任何一个上调用Add时,您就会#39 ; ll得到NullReferenceException。
以下是我将如何修复它(虽然您可以将初始化移动到控制器中,如果您选择的话):
public class CoursesViewModel
{
public List<string> CourseNames { get; set; }
public List<string> AssignmentNames { get; set; }
public CoursesViewModel()
{
CourseNames = new List<string>();
AssignmentNames = new List<string>();
}
}