14

基本上我正在做一个由 excpetion 引起的测试。

通过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 页面看起来不错但在标题上显示:

System.Collections.Generic.List`1[UniBlue.Models.KYC] UniBlue.Models.KYC

作为常规 HTML 文本

谁能告诉我为什么会这样?我应该怎么做才能删除奇怪的标题行?

4

2 回答 2

27

一个用于声明模型的强类型,另一个用于访问模型本身。

下面说用于模型的强类型是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>
于 2013-07-19T18:16:15.280 回答
6

@model 表示您称为 @Model 的变量的类型

@model string

@Model.ToUpper(); // works as @Model is of type string
于 2013-07-19T18:14:36.867 回答