2011-11-17 44 views
2

我是MVC(即最近幾天)的新手,我想知道我所做的是最好的方法。MVC 3在視圖中的2個模型

我有一個視圖,它是一個插入項目表單與一個特定實體下方的列表詳細信息表單的組合。因此,我需要2個模型的頁面,以避免做像@Html.LabelFor(model => model.FirstOrDefault().EventTypeID, "Event Type")

我所做的是將模型設置爲Tuple<IEnumerable<Event>,Event>那樣我就擁有了單個項目和項目集合。任何人都可以提出一個不太冒險的選擇,或者這是做這件事的最好方法嗎?

回答

5

有兩種解決方案。

  • 您應該創建一個不同的視圖模型類(一個簡單的類兩種型號屬性)
  • 你可以把它分配給ViewBag.Model1 ... ViewBag.Model2 ......但是,這是動態的,所以你將沒有智能感知,你可以在運行時得到錯誤。

你應該使用一個ViewModel這樣

public class ViewModel 
{ 
    public TypeOfYourModel MyModel1 { get; set; } 
    public TypeOfYourModel MyModel2 { get; set; } 
} 
+0

這會坐在Models文件夾中,因爲它目前是空的,因爲我的模型類是在單獨庫中的EF 4.1 pocos? –

+0

如果你喜歡,或者不同的程序集,你可以創建一個新的ViewModel文件夾。取決於你的應用層。 – dknaack

+0

好的,謝謝,這個解決方案距離使用Tuple不是一百萬英里,但是不知怎的,我覺得這個解決方案不那麼笨拙。 –

1

我建議你創建一個ViewModel,它將包含你想傳遞的兩個對象。

public class NewEventViewModel 
{ 
    public Event NewEvent { get; set; } 
    public Event EventDetails { get; set; } 
} 

你也可以使用ViewBag,但它不是強類型的,所以你不會得到IntelliSense。

+0

爲什麼這是低調的? –

0

我想創建一個模型對象只是認爲,與2個屬性,一個是單一的實體,一個用於收集,然後你就可以傳遞這個組合的對象作爲視圖的模型