我的申请在一个设施中有多个区域。我正在尝试将单个模型传递给包含设施值(设施 ID、设施名称)和区域列表的视图。我目前将区域列表作为表的实体模型类型(area_list)。
我的视图模型如下:
public class AreaView
{
public string facility_name { get; set; }
public int facility_id { get; set; }
public int group_id { get; set; }
public IList<area_list> areas { get; set; }
}
顺便说一句,我最初尝试将区域列表设置为单独的视图模型 (AreaS) 而不是模型 area_list,但我在那里遇到了其他问题,所以为了简单起见,我又直接引用了。我认为这会更合适......
我的控制器:
public ActionResult List(int id = 0)
{
var model = (from f in areaDB.facility_list
where f.facility_id == id
select new AreaView
{
facility_id = f.facility_id,
facility_name = f.facility_name,
areas = (from a in areaDB.area_list
orderby a.area_name
where a.facility_id == id
select a).ToList()
});
return View(model);
}
我的观点(略):
@model SkyeEnergy.Models.AreaView
Facility: @Model.facility_name
@foreach (var item in Model.areas) {
<tr>
<td>
@Html.ActionLink(item.vendor_name,"Details","Area",new {id = item.vendor_id},null)
</td>
</tr>
}
我尝试了多种变体来完成以下内容,这给了我很多错误,但最近的错误如下:
传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery`1[MyApp.Models.AreaView]”,但此字典需要“MyApp.Models.AreaView”类型的模型项。
我知道我没有传递视图所期望的正确类型,但我似乎无法弄清楚:
- 视图模型设置是否正确(如何混合值和子列表
- 如何构建我的 linq 查询以获取一个包含所有数据的 AreaView 对象
- 将它适当地(以正确的类型)传递给我的视图
我在 Stackoverflow 上阅读了大约 45 篇文章,但似乎无法将它们拼凑在一起以完成上述内容。如果有人有正确的解决方案(甚至是方向),我将不胜感激。
谢谢你的帮助。