基本上我正在做一次由一次激动引起的测试。
在控制器中使用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'
但是,当我将代码更改为 @模型 页面看起来不错,但在标题上显示:
System.Collections.Generic.List`1[UniBlue.Models.KYC] UniBlue.Models.KYC
作为常规HTML文本
有谁能告诉我为什么会这样?如何删除奇怪的标题行?
答案 0 :(得分:22)
一个用于声明模型的强类型,另一个用于访问模型本身。
以下说明用于模型的强类型是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>
答案 1 :(得分:6)
@model表示您引用为@Model
的变量的类型@model string
@Model.ToUpper(); // works as @Model is of type string