将模型指定为列表C#
为什么我的列表将模型指定为列表C#,c#,asp.net-mvc,list,models,C#,Asp.net Mvc,List,Models,为什么我的列表文件没有得到任何值? 我有另一个页面与相同的逻辑,一切都很好 如果需要,我可以提供更多的代码 public ActionResult TestPDF(List<int> fileid) { List<object> myModel = new List<object>(); List<object> obj = new List<object>(); foreac
文件没有得到任何值?
我有另一个页面与相同的逻辑,一切都很好
如果需要,我可以提供更多的代码
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);
}
公共操作结果测试PDF(列表文件ID)
{
List myModel=new List();
List obj=新列表();
foreach(fileid中的变量id)
{
Add(db.UploadedFiles.Find(id));
}
myModel.Add(obj);
返回视图(myModel);
}
很抱歉,我在您的快照中不够小心。您的Model
是IEnumerable
的集合,因此确实需要[0]
来获取第一个IEnumerable
。因此,您需要做的是:
List<Upload.Models.UploadedFile> files = Model.ToList()[0].ToList();
编辑:
更好的方法是修改控制器,使其返回强类型模型,并消除不必要的嵌套列表:
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);
}
并按顺序循环文件
@foreach (var item in Model)
{
...
}
编辑2
假设您使用的是实体框架,您可以进一步细化控制器,以:
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);
}
公共操作结果测试PDF(列表文件ID)
{
List myModel=fileid==null?new List():db.UploadedFiles.Where(o=>fileid.Contains(o.ID)).ToList();
返回视图(myModel);
}
是的,检查过了。还是有例外@m、 Rogalski,因为您正试图使用“as”将上载的文件强制转换为列表,而“as”将返回null,因为它无效。删除[0]
时,我将收到一个错误:无法将类型“System.Collections.Generic.List”转换为“System.Collections.Generic.List”。无法通过内置转换将“System.Collections.Generic.List”类型转换为“List”。我还忘了提到,在页面顶部有@model IEnumerable
您可以在控制器中显示代码吗?如果要将Upload.Models.UploadedFile
列表传递给视图,则应在视图开头添加@model IEnumerable
,以创建强类型视图是否有不能将其定义为IEnumerable的原因?(如果确实不能,可以使用.OfType)
@foreach (var item in Model)
{
...
}
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);
}