【发布时间】:2020-09-06 07:00:01
【问题描述】:
我正在实施 asp.net core 3.1。我将视图模型传递给剃刀视图,如下所示:
公共类 BuyRequestViewModel {
public IEnumerable<BuyRequest> BuyRequestVM { get; set; }
public IEnumerable<string> PlatesVM { get; set; }
}
我的问题是,由于我的视图模型不是 Ienumerable 类型,因此我在剃刀视图的 foreach 中遇到错误。错误如下: ForEach 语句无法对“MyPanel.ViewModels.BuyRequestViewModel”类型的变量进行操作,因为“MyPanel.ViewModels.BuyRequestViewModel”不包含“GetEnumerator”的公共实例定义
我的剃刀视图代码如下:
@model MyPanel.ViewModels.BuyRequestViewModel
<table id="myDummyTable" class="table m-table mytable table-striped table-bordered">
<thead>
<tr>
<th>
Region
</th>
<th>
Zone
<th>
MyPlate
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.BuyRequestVM.Select(x => x.Region))
</td>
<td>
@Html.DisplayFor(modelItem => item.BuyRequestVM.Select(x => x.Zone))
</td>
<td>
@Html.DisplayFor(modelItem => item.PlatesVM)
</td>
</tr>
}
</tbody>
</table>
下面是我的控制器中的索引操作:
public async Task<IActionResult> Index()
{
var bwrvm = new BuyRequestViewModel();
List<string> platesList = new List<string>();
var WasteAPIContext = _context.BuyRequest
.Include(b => b.UserWasteUnitNavigation).ToList();
bwrvm.BuyWasteRequestVM = WasteAPIContext;
var plateData = _context.Car.Select(x => x.Plate).ToList();
for (int i = 0; i < plateData.Count; i++)
{
//platesList.Add(plateData[i].ToString().Substring(2, 5));
string temp = getPlateCharacter(plateData[i].ToString().Substring(2, 3));
plateData[i].Remove(2, 3);
string totalPlate = plateData[i].Insert(2, temp);
platesList.Add(totalPlate);
}
bwrvm.PlatesVM = platesList;
return View(bwrvm);
}
感谢您的帮助。
【问题讨论】:
-
如果你想使用你的代码,你需要通过List
查看,并将 @model MyPanel.ViewModels.BuyRequestViewModel改为@model IEnumerable<MyPanel.ViewModels.BuyRequestViewModel>。
标签: asp.net-core razor