我在構建我的第一個MVC應用程序後遵循音樂商店教程,並嘗試在強類型視圖之間傳遞數據時遇到了一些問題。如何在MVC 3.0中的視圖之間傳遞數據列表?
我有兩個數據類型與自己的強類型的意見
客戶 客戶網站
在客戶網站的索引視圖(返回客戶站點的雙牀)我需要顯示下一個客戶名稱到每個站點地址,該視圖是強類型的客戶網站,但客戶名稱存儲在客戶表中,因此它不會允許我從模型中訪問此directlty?
我知道,一個選擇是使用viewbag,我已經成功地做到了這一點,以在下拉列表中使用下面的代碼
客戶站點控制器我創建視圖中顯示客戶名稱///// ////
public ActionResult Create()
{
ViewBag.Id = new SelectList(db.Customers, "Id", "CustomerName");
return View();
}
索引視圖//////////
@Html.DropDownListFor(model => model.CustomerId, (IEnumerable<SelectListItem>)ViewBag.Id)
這工作得很好,但現在我需要將客戶名稱要插入每個錶行,而不是降下拉列表。任何人都可以提供任何關於如何檢索要在客戶網站的索引視圖中的表格中呈現的客戶名稱的指針?
也是viewbag視圖之間傳遞數據的最佳方式還是有其他的替代方法嗎?有沒有辦法用多種數據類型強制輸入視圖?
任何人可以提供的建議將是偉大的。
親切的問候
利亞姆
聽起來像是問題在於您需要結合來自兩個類(Customer和CustomerSite)的信息。它是否正確? – Yuck 2011-05-05 12:55:31
您可以創建一個ViewModel類,將所有必要的信息合併到一個類中。這將有助於保持模型的純粹性,而不會限制視圖的功能。 – tomasmcguinness 2011-05-05 12:58:32
@tomas - 是的,請參閱下面的答案,其中顯示確切的主體。事實上,在我的設計中,即使視圖只需要一個域實體,我總是先將它包裝在一個ViewModel中,以便稍後我需要傳遞其他信息。這是前面多一點努力,但推動分離的想法多一點。=) – Yuck 2011-05-05 13:00:27