c# - 错误:模型项传入字典不匹配
问题描述
我想制作一个自定义视图模型类,它需要 2 个模型列表或可枚举。当我尝试在视图类中显示时,它给了我以下错误。
传入字典的模型项的类型为“Prototype01.ViewModels.StockViewModel”,但此字典需要类型为“System.Collections.Generic.IList`1[Prototype01.ViewModels.StockViewModel]”的模型项
我尝试制作单独的视图并使用简单的模型在视图中投影。它工作正常,但是当我尝试获取 viewmodel 时,它并没有像我预期的那样工作。
public class StockController : Controller
{
private ApplicationDbContext _context;
public StockController()
{
_context = new ApplicationDbContext();
}
protected override void Dispose(bool disposing)
{
_context.Dispose();
}
// GET: Stock
public ActionResult StockIndex()
{
var batteries = _context.Batteries.ToList();
var rims = _context.Rims.ToList();
var viewmodel = new StockViewModel
{
Batteries = batteries,
Rims = rims
};
return View(viewmodel);
}
}
public class StockViewModel
{
public IEnumerable<Battery> Batteries { get; set; }
public IEnumerable<Rim> Rims { get; set; }
}
@model IEnumerable<Prototype01.ViewModels.StockViewModel>
@{
ViewBag.Title = "StockIndex";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Stock Management</h2>
@if (!Model.Any())
{
<p>We don't have any Batteries yet.</p>
<label class="btn-group">@Html.ActionLink("Add New", "New", "Battery")
</label>
}
else
{
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>battery ID</th>
<th>battery Name</th>
</tr>
</thead>
<tbody>
@foreach (var bt in Model)
{
<tr>
<td> tying to show batteries here</td>
</tr>
}
</tbody>
</table>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Rim ID</th>
<th>Rim Name</th>
</tr>
</thead>
<tbody>
@foreach (var rm in Model)
{
<tr>
<td> tying to show Rims here</td>
</tr>
}
</tbody>
</table>
}
我正在尝试将数据存储在控制器方法中并发送 viewmodel 以仅显示来自数据库表 Batteries 和 Rims 的 2 个具有 Id 和名称的表
另一方面,我得到一个异常传递到字典中的模型项的类型是“Prototype01.ViewModels.StockViewModel”,但是这个字典需要一个类型为“System.Collections.Generic.IEnumerable`1[Prototype01. ViewModels.StockViewModel]'。
解决方案
您正在迭代模型,而不是单个枚举器;ViewModel 中的电池和轮辋。
所以换行:
@foreach (var bt in Model)
至:
@foreach (var bt in Model.Batteries)
轮辋也是如此:
@foreach (var rm in Model)
至:
@foreach (var rm in Model.Rims)
也改变:
@model IEnumerable<Prototype01.ViewModels.StockViewModel>
至:
@model Prototype01.ViewModels.StockViewModel
推荐阅读
- elasticsearch - 我在java中使用elasticsearch并希望将下面转换为java代码。我在聚合和术语语法方面遇到困难
- python - Airflow DAG 任务未运行,因为它卡在“无”状态
- python - 有没有办法从python中另一个数字上方的列表中的每个数字中减去一个数字?
- c++ - 通过 UNIX shell 命令“>”将进程的输出通过管道传输到文件
- xml - xml 到richtextbox,在 RTB 中进行一些格式化,也许更改数据,然后将 RTB 文本保存回 xml
- javascript - 通过javascript删除重复元素
- sql - 将嵌套查询与 SQLite 中的另一个结果合并
- python - 在通过 c execlp 函数运行此 python 脚本时从 python 脚本返回一个值?
- python - 在字符串中使用变量 - 特别是 Python/Maya 中的样式表
- database - 创建此触发器时,我的时间语法有什么问题?