【发布时间】:2019-08-03 16:07:20
【问题描述】:
我想制作一个自定义视图模型类,它需要 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 以仅显示 2 个具有数据库表 Batteries 和 Rims 的 Id 和名称的表
另一方面,我遇到了一个异常 传入字典的模型项的类型为“Prototype01.ViewModels.StockViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[Prototype01.ViewModels.StockViewModel]”的模型项。
【问题讨论】:
标签: c# dictionary types ienumerable