2009-01-12 45 views
0

我不確定這兩種方法是否有區別。如果是這樣,那麼在向視圖提交多個對象時將被認爲是更好的做法。MVC模型:提交多個對象到視圖

  1. 使控制器對每個對象模型分別調用數據層,然後將對象包裝到模型中發送以查看。

  2. 定義「演示文稿」模型並讓控制器調用該單一模型發送到視圖。

  3. 其他...?

回答

3

我在這裏假設你有一個視圖,它呈現來自多個模型的一些信息,可能是列表格式。例如,您可能擁有一個擁有一組聯繫人的客戶模型,但在您的列表中,您要選擇顯示一些客戶詳細信息以及主要聯繫人的姓名和電話號碼。在這種情況下,我通常會做的是定義一個特定的「演示」模型,該模型僅由我希望在此組合視圖中顯示的那些細節組成。它通常是隻讀模式。使用LINQ to SQL我甚至可能將它定義爲一個表值函數(以支持搜索)並將它與封裝各種表的連接的視圖相關聯。既可以將基於視圖的「演示文稿」模型添加到DBML中,也可以將表值函數與其作爲數據上下文的方法相關聯。

我更喜歡這樣做,因爲我相信它在查詢方面更有效率,可以在服務器上構建查詢並從代碼中簡單地使用它。如果您沒有使用表值函數進行搜索,則可以在代碼中構建查詢並選擇「演示」類。爲了便於在視圖中使用,我傾向於使用匿名類型的實際類。在視圖中從匿名類型獲取屬性將很困難。

3

你應該發送到View單個對象,有時被稱爲ViewModel對象,包含了所有的數據(包括域模型對象),該視圖將需要。

相關問題