Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将模型指定为列表C#_C#_Asp.net Mvc_List_Models - Fatal编程技术网

将模型指定为列表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);
}