【发布时间】:2017-05-13 09:33:15
【问题描述】:
在我的 dotnet Core 项目中,我有 3 个数据库表:Building、Checklist 和 answer。
对于每个建筑物,我想创建一个表格,其中包含基于清单和答案表的信息。我试过像下面的代码那样设置它,但它不起作用。
我的视图模型:
public class myViewModel
{
public int id { get; set; }
public List<Answers> myAnswers { get; set; }
public List<Building> myBuildings { get; set; }
public List<Check> myCheckpoints { get; set; }
}
我的控制器如下所示:
public IActionResult viewData()
{
var currentUser = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
var vm = new myViewModel();
vm.myBuildings = (from mb in db.buildings where mb.OwnerId == currentUser select mb).ToList();
vm.myAnswers = (from o in db.answers select o).ToList();
vm.myCheckpoints = (from mc in db.checks select mc).ToList();
return View(vm);
}
我的看法:
@model List<Server.myViewModel>
@foreach (var building in Model)
{
<h4>@Html.DisplayFor(modelItem => building.myBuildings.buildingName)</h4>
<table>
<thead>
<tr>
<th>Avviksbeskrivelse</th>
<th>Risiko</th>
<th>Dato registrert</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.myCheckpoints.Description)</td>
<td>@Html.DisplayFor(modelItem => item.myAnswers.Deviation)</td>
<td>@Html.DisplayFor(modelItem => item.myAnswers.Risk)</td>
</tr>
}
</tbody>
</table>
}
使用@foreach 时,我收到以下异常消息:
System.InvalidOperationException:模型项传入 ViewDataDictionary 的类型为“Server.myViewModel”,但这 ViewDataDictionary 实例需要类型为模型项 'System.Collections.Generic.IEnumerable`1[Server.myViewModel]'。
我也无法从 item.myAnswer 转到 item.myAnswer.Risk。
有谁知道我可以如何解决这些问题,或者有更好的方法吗?
【问题讨论】:
标签: c# html asp.net linq razor