遍历 ViewModel 中的实体列表
Looping through list of entities in a ViewModel
我的一个实体 Create
页面需要包含其他实体的列表,在本例中 Timetable
创建视图需要包含 Station
实体的列表。为此,我创建了自己的 ViewModel:
public class TimetablesCreateViewModel
{
public Timetable Timetable { get; set; }
public IEnumerable<Station> Stations { get; set; }
}
然后我将 TimetablesController
class 中的 Create
方法更改为:
public ActionResult Create()
{
TimetablesCreateViewModel model = new TimetablesCreateViewModel
{
Timetable = new Timetable(),
Stations = db.Stations.ToList()
};
return View();
}
然后我修改了我的 Create.cshtml
页面以使用 @model MyApp.ViewModels.TimetablesCreateViewModel
,并且我正在尝试像这样遍历 Station
s:
@foreach (var s in Model.Stations)
{
<p>@s.Name</p>
}
当我加载 /Timetables/Create
页面时,我得到 NullReferenceException
:
An exception of type 'System.NullReferenceException' occurred in
App_Web_lqnuresu.dll but was not handled in user code
Additional information: Object reference not set to an instance of an
object.
我认为唯一会导致这种情况的是,如果没有任何站点被填充到 Model.Stations
,但事实并非如此,它成功地检索了数据库中的所有站点。
您需要 return 具有视图的模型:
return View(model);
我的一个实体 Create
页面需要包含其他实体的列表,在本例中 Timetable
创建视图需要包含 Station
实体的列表。为此,我创建了自己的 ViewModel:
public class TimetablesCreateViewModel
{
public Timetable Timetable { get; set; }
public IEnumerable<Station> Stations { get; set; }
}
然后我将 TimetablesController
class 中的 Create
方法更改为:
public ActionResult Create()
{
TimetablesCreateViewModel model = new TimetablesCreateViewModel
{
Timetable = new Timetable(),
Stations = db.Stations.ToList()
};
return View();
}
然后我修改了我的 Create.cshtml
页面以使用 @model MyApp.ViewModels.TimetablesCreateViewModel
,并且我正在尝试像这样遍历 Station
s:
@foreach (var s in Model.Stations)
{
<p>@s.Name</p>
}
当我加载 /Timetables/Create
页面时,我得到 NullReferenceException
:
An exception of type 'System.NullReferenceException' occurred in App_Web_lqnuresu.dll but was not handled in user code
Additional information: Object reference not set to an instance of an object.
我认为唯一会导致这种情况的是,如果没有任何站点被填充到 Model.Stations
,但事实并非如此,它成功地检索了数据库中的所有站点。
您需要 return 具有视图的模型:
return View(model);