在ViewModel中循环遍历实体列表。
在ViewModel中循环遍历实体列表。
我的一个实体Create
页面需要有其他实体的列表,这种情况下Timetable
创建视图需要一个Station
实体的列表。为了实现这一点,我创建了自己的ViewModel:
public class TimetablesCreateViewModel { public Timetable Timetable { get; set; } public IEnumerableStations { get; set; } }
然后,我将TimetablesController
类中的Create
方法改为以下内容:
public ActionResult Create() { TimetablesCreateViewModel model = new TimetablesCreateViewModel { Timetable = new Timetable(), Stations = db.Stations.ToList() }; return View(); }
然后,我修改了Create.cshtml
页面,使用了@model MyApp.ViewModels.TimetablesCreateViewModel
,我尝试像这样循环遍历Station
:
@foreach (var s in Model.Stations)
{
@s.Name
}
当我加载/Timetables/Create
页面时,出现了一个NullReferenceException
:
类型为'System.NullReferenceException'的异常在App_Web_lqnuresu.dll中发生,但在用户代码中未处理
其他信息:对象引用未设置为对象的实例。
我唯一认为可能导致这个问题的原因是Model.Stations
中没有任何站点,但事实并非如此,它成功地检索了数据库中的所有站点。
Looping through list of entities in a ViewModel
问题的出现原因:
在ASP.NET MVC中,有时候我们需要在视图中循环遍历一个实体列表。然而,如果没有正确地将模型传递给视图,这可能会导致问题。在这种情况下,问题的出现是因为没有正确地返回带有视图的模型。
解决方法:
要解决这个问题,我们需要确保在控制器中正确地返回带有视图的模型。为了实现这一点,我们可以使用以下代码行:
return View(model);
通过这个代码行,我们可以将包含实体列表的模型传递给视图,以便能够在视图中使用循环来遍历实体列表。
在ASP.NET MVC中,循环遍历实体列表是常见的需求。然而,要正确地实现这一点,我们需要确保在控制器中返回带有视图的模型。通过使用return View(model);
这个代码行,我们可以将包含实体列表的模型传递给视图,从而可以在视图中使用循环遍历实体列表。这样,我们就能够正确地展示实体列表的内容。