我的應用程序在一個設施內有多個區域。我試圖將單個模型傳遞給包含設施值(facility_id,facility_name)的視圖和區域列表。我現在將區域列表作爲表(area_list)的實體模型的類型。使用包含父值和子列表的視圖模型的MVC傳遞viewmodel視圖
我的視圖模型如下:
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; }
}
順便說一句,我本來試圖設置(地區)而不是模型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'類型的模型項。
我明白,我沒有通過正確的類型是什麼看法期待,但我似乎無法弄清楚:
- 是視圖模型設置正確的firstplace(怎麼混值和如何構建我的LINQ查詢孩子
- 的列表,以獲得一個AreaView對象與 我的所有數據
- 適當地傳遞下去(在正確的類型),以我的觀點
我已經閱讀了關於Stackoverflow的大約45篇文章,但似乎無法將它們拼湊在一起來完成上述內容。如果任何人有正確的解決方案(甚至是一個方向),我會非常感激。
感謝您的任何幫助。
拆分查詢確實使它更容易。從你的例子來看,我的第一行代碼看起來有點不同,這有什麼問題? 'code var model =(from from f in areaDB.facility_list where f.facility_id == id select new AreaView {...' – user1644147 2013-02-25 19:23:45
在調試模式下跳過您的代碼,這將使它很難知道那些值你把它們放在一起,當你把事情分解並把它們聯繫在一起時,它使你的代碼更簡單,更容易測試 – codingbiz 2013-02-25 19:36:41