C# c-@foreach(模型中的变量项)

C# c-@foreach(模型中的变量项),c#,database,model-view-controller,model,C#,Database,Model View Controller,Model,这与NullReferenceException问题不同,因为我们处理的是一个被关注点分隔开的项目,这在某些方面使它有所不同——因为前面的答案涉及一个项目,我们处理的是3个不同的项目和名称空间 我一直在想: Line 41: <th></th> Line 42: </tr> Line 43: @foreach (var item in Model) Line 44: { Line 45: <tr&g

这与NullReferenceException问题不同,因为我们处理的是一个被关注点分隔开的项目,这在某些方面使它有所不同——因为前面的答案涉及一个项目,我们处理的是3个不同的项目和名称空间

我一直在想:

Line 41:         <th></th>
Line 42:     </tr>
Line 43:     @foreach (var item in Model)
Line 44:     {
Line 45:         <tr>
通路

最后是index.schtml,我在这里遇到了问题

所有内容都会编译,并且没有错误


您的视图需要DVD类型型号的集合

@model IEnumerable<DVDStore.Data.Models.DVD>
您应该传递DVD对象列表

更新:


最快的方法是从方法返回DVD对象列表

public IEnumerable<DVDStore.Data.Models.DVD> FindAllDVD(string DVDTitles, string searchString)
并返回DVD列表

然后在控制器中,您可以执行以下操作:

FindAllDVDs findDVDs = new FindAllDVDs();
IEnumerable<Dvd> dvds = findDVDs.FindAllDVD(<DVDTitles>, <searchString>);
return View(dvds);
然而,我不建议采取这种做法。您不想将数据模型用作视图模型。我宁愿创建一个单独的DVD类作为视图的模型,然后将数据模型映射到此视图模型。

您需要更改FindAllDVD方法,使其具有:

return dvds;
作为它的最后一行。这可能意味着将签名更改为:

public IEnumerable<DVD> FindAllDVD(string DVDTitles, string searchString)
这样,您的模型将使用DVD集,而不是像现在这样使用FindAllDVD类的单个实例。

在FindAllDVD中,您有列表DVD=新列表;这是在构造函数内部设置的

您可以调用构造函数,就像您刚刚记得取消对dvds属性的注释一样,如下所示:

public List<FindAllDVDs> dVDs = new List<FindAllDVDs>();
dVDs = dvds;
dVDs = dvds.toList();
FindAllDVDs findDVDs = new FindAllDVDs("","");

return View(findDVDs.dvds);
也许你需要做一些演员,比如:

public List<FindAllDVDs> dVDs = new List<FindAllDVDs>();
dVDs = dvds;
dVDs = dvds.toList();
FindAllDVDs findDVDs = new FindAllDVDs("","");

return View(findDVDs.dvds);
,并传递FindAllDVDs中的值,如下所示:

public List<FindAllDVDs> dVDs = new List<FindAllDVDs>();
dVDs = dvds;
dVDs = dvds.toList();
FindAllDVDs findDVDs = new FindAllDVDs("","");

return View(findDVDs.dvds);

如何传递?最快的方法是从方法返回DVD对象列表。public IEnumerable FindAllDVDstring DVD标题、字符串搜索字符串并返回列表DVD。然后在控制器中,可以执行以下操作:FindAllDVDs findDVDs=newfindalldvds;IEnumerable DVD=findDVDs.FindAllDVD;返回查看DVD;然而,我不建议采取这种做法。我宁愿创建一个单独的DVD类作为视图的模型,然后将数据模型映射到此视图模型。对不起,我的注释有点混乱,仍然难以处理此注释格式。我用我描述的内容更新了我的答案。它似乎无法识别DVD-你是说取消对DVD的注释正确吗?我现在做了更详细的描述,我的意思是取消对FindAllDVDs顶部的属性的注释,并使用它来获取控制器的值。当然,它是重复的-如果多个名称空间项目没有区别。模型中@foreach var项中的模型为空。而公共ActionResult索引方法中的代码毫无意义。您所做的只是初始化类的一个实例。您甚至没有调用FindAllDVD方法,该方法不会以任何方式返回任何内容。Alex,导致此异常的唯一原因是:您尝试使用的值为null。因此,每个NullReferenceException问题都是重复的。你的副本问题解释了所有可能为空的方式以及如何修复它。