将模型分配为列表 C#
Assigning model as list C#
为什么我的列表 files
没有任何值?
我有另一个具有相同逻辑的页面,一切正常。
如果需要,我可以提供更多代码。
public ActionResult TestPDF(List<int> fileid)
{
List<object> myModel = new List<object>();
List<object> obj = new List<object>();
foreach (var id in fileid)
{
obj.Add(db.UploadedFiles.Find(id));
}
myModel.Add(obj);
return View(myModel);
}
抱歉,我在您的快照中不够仔细。你Model
是IEnumerable<UploadedFile>
的集合,所以确实需要[0]
才能得到第一个IEnumerable<UploadedFile>
。所以你需要做的是:
List<Upload.Models.UploadedFile> files = Model.ToList()[0].ToList();
或者您可以像这样枚举文件:
@foreach (var item in Model.ToList()[0])
{
...
}
编辑:
更好的方法是修改您的控制器,使其 returns 强类型模型,并摆脱不必要的嵌套列表:
public ActionResult TestPDF(List<int> fileid)
{
var myModel = new List<UploadedFile>();
foreach (var id in fileid)
{
myModel.Add(db.UploadedFiles.Find(id));
}
return View(myModel);
}
那么你可以把你视图中的@model
修改为
@model List<Upload.Models.UploadedFile>
并按
循环文件
@foreach (var item in Model)
{
...
}
编辑 2
假设您正在使用 Entity Framework,您可以将控制器进一步细化为:
public ActionResult TestPDF(List<int> fileid)
{
List<Upload.Models.UploadedFile> myModel = fileid == null ? new List<Upload.Models.UploadedFile>() : db.UploadedFiles.Where(o => fileid.Contains(o.ID)).ToList();
return View(myModel);
}
files
没有任何值?
我有另一个具有相同逻辑的页面,一切正常。
如果需要,我可以提供更多代码。
public ActionResult TestPDF(List<int> fileid)
{
List<object> myModel = new List<object>();
List<object> obj = new List<object>();
foreach (var id in fileid)
{
obj.Add(db.UploadedFiles.Find(id));
}
myModel.Add(obj);
return View(myModel);
}
抱歉,我在您的快照中不够仔细。你Model
是IEnumerable<UploadedFile>
的集合,所以确实需要[0]
才能得到第一个IEnumerable<UploadedFile>
。所以你需要做的是:
List<Upload.Models.UploadedFile> files = Model.ToList()[0].ToList();
或者您可以像这样枚举文件:
@foreach (var item in Model.ToList()[0])
{
...
}
编辑: 更好的方法是修改您的控制器,使其 returns 强类型模型,并摆脱不必要的嵌套列表:
public ActionResult TestPDF(List<int> fileid)
{
var myModel = new List<UploadedFile>();
foreach (var id in fileid)
{
myModel.Add(db.UploadedFiles.Find(id));
}
return View(myModel);
}
那么你可以把你视图中的@model
修改为
@model List<Upload.Models.UploadedFile>
并按
循环文件@foreach (var item in Model)
{
...
}
编辑 2 假设您正在使用 Entity Framework,您可以将控制器进一步细化为:
public ActionResult TestPDF(List<int> fileid)
{
List<Upload.Models.UploadedFile> myModel = fileid == null ? new List<Upload.Models.UploadedFile>() : db.UploadedFiles.Where(o => fileid.Contains(o.ID)).ToList();
return View(myModel);
}