一個視圖接受一個模型。 但我需要爲兩個模型繪製HTML輸入控件。 一個例子將說明:當View需要多個Model時,如何優雅地編程ASP.NET MVC?
我有一個屏幕,我添加Employees。 添加他們的名字,姓氏等等之後,我需要用戶選擇一些員工可以在的公司。
這些公司在一張桌子上。 僱員在另一個。 並且一個鏈接表連接它們。
所以看來我需要通過公司的觀點。 我可以將多個模型傳遞給視圖嗎? 或者我必須在視圖中進行醜陋的數據庫查找以查找公司,並且手動吐出沒有HTML助手的複選框的HTML?
一個視圖接受一個模型。 但我需要爲兩個模型繪製HTML輸入控件。 一個例子將說明:當View需要多個Model時,如何優雅地編程ASP.NET MVC?
我有一個屏幕,我添加Employees。 添加他們的名字,姓氏等等之後,我需要用戶選擇一些員工可以在的公司。
這些公司在一張桌子上。 僱員在另一個。 並且一個鏈接表連接它們。
所以看來我需要通過公司的觀點。 我可以將多個模型傳遞給視圖嗎? 或者我必須在視圖中進行醜陋的數據庫查找以查找公司,並且手動吐出沒有HTML助手的複選框的HTML?
模型不一定只包含一個對象或一個對象類型的單個集合。它可以包含許多對象和/或對象集合。看起來您的頁面所需的模型至少包括兩個員工和公司的集合。如果您的商業對象抽象中沒有適合此法案的類型,那麼您需要爲此頁面創建一個ViewModel來完成這項工作。
這個答案可能有助於解釋一個ViewModel在MVVM ViewModel vs. MVC ViewModel
這是我過去的做法。然後,如果視圖具有采用這些「子」視圖模型之一的局部視圖,那麼只需調用Model.PartialModel即可直接傳遞給它們,它仍然是強類型的:-) – WestDiscGolf 2010-03-03 09:38:23
這並不完全是顯而易見的是如何適應 - 我敢肯定,這是一些大師類型但對我們其餘的人想工作的事情了其位更有意思的。
沒有進入細節我看到了一些解決這個辦法:
我認爲在這種情況下,你要添加的員工要麼調整模式或增加公司名單作爲補充數據到ViewData的就足夠了,但對於編輯 - 假設其所需的 - 而不是插入你想公司選擇名單(所有公司的標誌,以表明目前選擇),而不僅僅是一個公司的名單,在這一點上,它都得到了一點更有趣
我相信這是用戶控制派上用場。 – 2010-03-03 05:42:05
這是否意味着我應該創建一個用戶控件來繪製一排複選框? – Petras 2010-03-03 06:03:32