基本的に私は、例外の1つによって引き起こされたテストを行っています。
コントローラでreturn View(list_a
)を使用して、リストをビューに渡しました。[ビュー]ページのコードは次のようになります。
@{
ViewBag.Title = "KYC_Home";
}
@using UniBlue.Models;
@model UniBlue.Models.KYC
...
@foreach(KYC a in Model)
...
例外があります:
CS1579: foreach statement cannot operate on variables of type 'UniBlue.Models.KYC' because 'UniBlue.Models.KYC' does not contain a public definition for 'GetEnumerator'
しかし、コードを@Model Pageに変更すると見栄えが良くなりますが、タイトルには次のように表示されます。
System.Collections.Generic.List`1[UniBlue.Models.KYC] UniBlue.Models.KYC
通常のHTMLテキストとして
なぜこれが起こったのか誰か教えてもらえますか?奇妙なタイトル行を削除するにはどうすればよいですか?
1つはモデルの厳密な型を宣言するために使用され、もう1つはモデル自体にアクセスするために使用されます。
以下は、モデルに使用されるストロングタイプがUniBlue.Models.KYC
であることを示しています。
@model UniBlue.Models.KYC
これは基本的に '変数' Model
をその型として宣言します。これは、次のことを行うのと似ています。
UniBlue.Models.KYC Model;
Model
は変数、@model
はModel
のタイプを示すキーワードです。
エラーは、Model
をKYCとして宣言したが、KYCを列挙できないためです。 foreach
で使用しており、IEnumerable<UniBlue.Models.KYC>
を期待していますがそうではありません。
モデルが本当にリストである場合は、
@model IEnumerable<UniBlue.Models.KYC>
@modelは、@ Modelとして参照する変数のタイプを示します
@model string
@Model.ToUpper(); // works as @Model is of type string