将模型分配为列表C#

时间:2017-12-14 08:59:52

标签: c# asp.net-mvc list models

enter image description here 为什么我的列表 public function index(){ if($this->input->post()){ //set rules for form validation if($this->form_validation->run() !== FALSE){ //then update } } //your views, data or any other things you do } 没有获得任何值? 我有另一个页面具有相同的逻辑,一切正常。

如果需要,我可以提供更多代码。

     echo form_input('name', set_value('name'));

1 个答案:

答案 0 :(得分:3)

抱歉,我对你的快照不够谨慎。您ModelIEnumerable<UploadedFile>的集合,因此确实需要[0]才能获得第一个IEnumerable<UploadedFile>。所以你需要做的是:

List<Upload.Models.UploadedFile> files = Model.ToList()[0].ToList();

或者你可以枚举像:

这样的文件
@foreach (var item in Model.ToList()[0])
{
    ...
}

修改: 更好的方法是修改控制器,使其返回强类型模型,并摆脱不必要的嵌套List:

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);
}