2012-07-03 203 views
0

我希望你們能回答我一個問題嗎?我剛剛開始使用ASP.NET MVC3在某個時刻已經脫臼了。我一直在從書本上學習這些東西,並且我對一些事情略有不確定性。MVC3剃刀需要幫助

VIEW可以只有一個@Model引用嗎?

目前,我在ViewResult上使用HTTP-POST進行VIEW設置,驗證View中的數據,由用戶輸入,然後「在發佈」,將此信息傳遞給將其寫回的方法到數據庫(ADO.NET - Access)。現在我需要更改我的VIEW,以便我可以替換Dropdownlistfor控件的幾個文本框。要填充這些控件的數據將需要從數據庫傳入。

我說這個數據需要在頁面的HTTP-GET Viewresult中傳遞是否正確,如果是這樣,我可以在同一個View(* .cshtml)中引用多個@Model。

我有一個接受用戶響應的類,並且這在View中被引用。但是,我是否需要爲下拉列表數據和參考創建一個新類。因此,在後臺我將數據填充到SelectListItem中,將它傳遞給View,然後填充視圖中的每個下拉控件?

對不起,如果這是寫得不好,很難解釋,我覺得從書上學習努力,我現在很堅持。任何幫助,將不勝感激。只是爲了讓我瞭解這一切如何繞過。我對C#語法感到滿意,但很不確定MVC3!

回答

2

有兩種方法可以處理這個問題。

  • 使用視圖模型。

在這種情況下,你必須包含您的數據模型以及由視圖所需要的其他東西,所以像這樣的類:

public class ViewModel 
{ 
    public MyDomainModel Model { get; set; } 
    public IEnumerable<SelectListItem> SelectListItems { get; set; } 
} 
  • 使用ViewBag

在這種情況下,你都添加額外的進ViewBag字典。因此,在控制器,你就必須像這樣的東西:

ViewBag.SelectListItems = new SelectListItem[] { ... }; 

然後你就可以在視圖本身

@Html.DropDownList("myselectlist", ViewBag.SelectListItems) 
+0

你剛剛打了我一分鐘! –

+0

所以,我可以使用視圖包來存儲多種類型的數據。如果我需要兩個下拉列表和一個過濾器,我可以將兩組數據分配到View包中,名稱不同。我還沒有遇到View Models,我一定會閱讀它們! – Derek

+1

說實話 - 在MVC中使用ViewBag並不是好習慣。 ViewModel是更好的解決方案。 –

1

我認爲這將幫助你pluralsight mvc3 intro引用。它肯定幫了我

+0

感謝這個,這個鏈接看起來很理想,現在就來學習吧! – Derek