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

抱歉,我在您的快照中不够仔细。你ModelIEnumerable<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);
}