2017-12-14 4 views
-1

enter image description here なぜ私のリストはfilesになりますか? 同じロジックのページがあり、すべて正常に動作します。モデルをリストとして割り当てるC#

必要に応じてさらにコードを提供できます。

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

うん、:あなたと仮定すると

@foreach (var item in Model) { ... } 

EDIT 2 によって

@model List<Upload.Models.UploadedFile> 

とループファイルは、Entity Frameworkのを使用しているO、あなたはそれ以上にコントローラをさらに絞り込むことができそれ。それでも例外が発生します。 @ m.rogalski – Vasja

+2

UploadedFileをList に 'as'を使用してキャストしようとしているため、有効でないためnullが返されます。 –

答えて

3

私はあなたのスナップショットに十分な注意を払っていませんでした。 ModelIEnumerable<UploadedFile>のコレクションなので、最初にIEnumerable<UploadedFile>を取得するには[0]が本当に必要です。

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

それとも、ただのようなファイルを列挙できます:だから、あなたは何をする必要があるかである

@foreach (var item in Model.ToList()[0]) 
{ 
    ... 
} 

EDIT:それは強い型付きを返すように良い方法がある があなたのコントローラを変更しますモデル、および不要なネストされたリストを取り除く:

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を修正することができます確認

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

'[0]'を削除すると、エラーが発生します: 'System.Collections.Generic.List 'に 'System.Collections.Generic.List 'を変換できません。組み込みの変換を使用して 'System.Collections.Generic.List 'を 'List 'に変換することはできません。 – Vasja

+0

また、私は '@model IEnumerable ' – Vasja

+0

を持っているページの一番上に、あなたのコントローラにコードを表示できますか? 'Upload.Models.UploadedFile'のリストをビューに渡す場合は、ビューの先頭に' @model IEnumerable 'を追加して、強い型付きビューを作成してください。 –

関連する問題