错误:foreach 语句无法对类型的变量进行操作,因为不包含 'GetEnumerator' 的公共定义



我想从由列表组成的模型中呈现要查看的数据。

交易模式:

public class Transaction
{
public int AccountId { get; set; }
public string AccountName { get; set; }
public string Type { get; set; }
public DateTime Date { get; set; }
public int Amount { get; set; }
}

TransactionViewModel:

public class TransactionViewModel
{
public List<Transaction> Transactions { get; set; }
}

控制器:

public IActionResult Index()
{
// var dataset = new DataSet();
using var connection = new NpgsqlConnection(connString);
connection.Open();
/* getting account name, type, date, amount from transaction and account table*/
var sql = @"SELECT *
FROM account as a
INNER JOIN transaction AS t
ON a.account_id = t.account_id";
using var sqlCommand = new NpgsqlCommand(sql, connection);
NpgsqlDataReader reader = sqlCommand.ExecuteReader();
List<Transaction> transaction_Lists = new List<Transaction>();
if (reader.HasRows)
{
while (reader.Read())
{
transaction_Lists.Add(new Transaction
{
AccountId = Convert.ToInt32(reader["account_id"]),
AccountName = Convert.ToString(reader["account_name"]),
Type = Convert.ToString(reader["type"]),
Amount = Convert.ToInt32(reader["amount"]),

});
}
}
return View(transaction_Lists);
}

视图:

@using System.Data;
@model MyViewModel;
@foreach(var item in Model)
{
<tr>
<td>@Model.AccountName</td>
</tr>
}

在视图中,我得到了一个错误:

foreach语句无法对"类型的变量进行操作,因为"不包含"GetEnumerator"的公共定义">

为什么我不能循环浏览?

Index(),您正试图将视图模型返回为List<Transaction>类型。

更改您的视图如下:

@model List<Transaction>
@foreach(var item in Model)
{
<tr>
<td>@item.AccountName</td>
</tr>
}

MVC(List<Transaction>模型(示例


或者,如果要将视图模型返回为TransactionViewModel类型。

控制器

public IActionResult Index()
{
...
var model = new TransactionViewModel();
model.Transactions = transaction_Lists;

return View(model);
}

查看

@model TransactionViewModel
@foreach(var item in Model.Transactions)
{
<tr>
<td>@item.AccountName</td>
</tr>
}

MVC(TransactionViewModel模型(示例

相关内容

最新更新