在ViewModel中循环遍历实体列表。

6 浏览
0 Comments

在ViewModel中循环遍历实体列表。

我的一个实体Create页面需要有其他实体的列表,这种情况下Timetable创建视图需要一个Station实体的列表。为了实现这一点,我创建了自己的ViewModel:

public class TimetablesCreateViewModel
{
    public Timetable Timetable { get; set; }
    public IEnumerable Stations { 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中没有任何站点,但事实并非如此,它成功地检索了数据库中的所有站点。

0
0 Comments

Looping through list of entities in a ViewModel

问题的出现原因:

在ASP.NET MVC中,有时候我们需要在视图中循环遍历一个实体列表。然而,如果没有正确地将模型传递给视图,这可能会导致问题。在这种情况下,问题的出现是因为没有正确地返回带有视图的模型。

解决方法:

要解决这个问题,我们需要确保在控制器中正确地返回带有视图的模型。为了实现这一点,我们可以使用以下代码行:

return View(model);

通过这个代码行,我们可以将包含实体列表的模型传递给视图,以便能够在视图中使用循环来遍历实体列表。

在ASP.NET MVC中,循环遍历实体列表是常见的需求。然而,要正确地实现这一点,我们需要确保在控制器中返回带有视图的模型。通过使用return View(model);这个代码行,我们可以将包含实体列表的模型传递给视图,从而可以在视图中使用循环遍历实体列表。这样,我们就能够正确地展示实体列表的内容。

0