前提・実現したいこと
CSVファイルを読み込み、必要な情報をModelクラスに格納して、
HTMLにControllerから渡されたModelクラスの中身を表示したい。
発生している問題・エラーメッセージ
ControllerからViewにModelクラスをPartialViewを使用して渡すと、下記エラーが発生します。
渡せてはいる?ぽいのですが、このエラーが出る原因がわかりません。
ディクショナリに型 'Sample.Models.Samplemodel' のモデル項目が渡されましたが、このディクショナリには型 'System.Collections.Generic.IEnumerable`1[Sample.Models.Samplemodel]' のモデル項目が必要です。 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.InvalidOperationException: ディクショナリに型 'Sample.Models.Samplemodel' のモデル項目が渡されましたが、このディクショナリには型 'System.Collections.Generic.IEnumerable`1[Sample.Models.Samplemodel]' のモデル項目が必要です。
該当のソースコード
Samplemodel.cs
C#
1public class Samplemodel 2{ 3 [Required] 4 public string year { get; set; } 5 public string month { get; set; } 6 public string message { get; set; } 7 public int count { get; set; } 8 public int error { get; set; } 9 }
Sample_Controller.cs
C#
1 public ActionResult Sample_main(string csv_name) 2 { 3 if (csv_name != "") 4 { 5 var getCsvCnt = new getCsvCnt(); //CSVの内容を解析、Modelへ格納等の処理をするクラス 6 Samplemodel model = getCsvCnt.GetCnt(csv_name); //引数にcsv_nameを渡すことで↑の処理をするメソッド 7 8 return PartialView("Sample_main", model);; 9 } 10 else 11 { 12 ViewData["message"] = "※ファイルパスを入力してください"; 13 return View(); 14 } 15 }
Sample_main.cshtml
HTML
1@model IEnumerable <Sample.Models.Samplemodel> 2 3<body> 4 <form action="Sample_main" method="post"> 5 <div> 6 <input type="text" name="csv_name" /> //CSVファイルのフルパスを入力して 7 <input type="submit"/> //Controllerにcsv_nameを渡す 8 </div> 9 <form> 10 11 @if (Model != null) 12 { 13 foreach (var item in Model) 14 { 15 <p class="branch"> 16 @Html.DisplayFor(model => item.count) //ここに表示できるようにしたい 17 </p> 18 } 19 } 20</body>
補足情報(FW/ツールのバージョンなど)
環境:
windows10 64bit
visual studio 2019
ASP.NET webアプリケーション MVC
.NET Framework 4.7.2
C#
回答1件
あなたの回答
tips
プレビュー