2011-02-10 121 views
5

我開始使用ASP .NET MVC。並且,正如我所看到的,有兩種方法可以將數據傳遞到視圖:強類型視圖vs動態類型視圖

  1. Make View繼承ViewPage並將動態對象傳遞給視圖。
  2. 生成強類型View,繼承ViewPage,並將自定義視圖模型類的實例傳遞給視圖。

每個人的優點和缺點是什麼?

+0

我認爲當你不問「哪個更好」,而只是要求優點/缺點時,它就沒有什麼爭議。 – 2011-02-10 10:31:55

回答

4

只要有可能,請始終使用強類型視圖,以便您確切知道將哪些數據作爲模型傳遞給該視圖。如果你使用動態的,你實際上並不總是知道數據會是什麼,並且如果事情發生變化,可能會導致運行時錯誤。

+0

強類型視圖的其他優點是:視圖編譯期間的代碼驗證和智能感知。 – 2013-09-08 08:23:02

3

根據JOSH DOOLAN,強類型視圖對於處理複雜類型數據更有用。 例如,我有一類人組成:

Public Class Person 

{ 
String _name; 
String _age; 
Pet _pet; 

// gets & sets below..etc 
} 

如果在事件中,你有,你想這個特殊的類綁定到一個表單(以創建「新」的人)一個用例,直到你遇到複雜類型的Pet,它會非常直線前進。

你要做的只是強制將人物鍵入特定視圖,然後在該視圖內調用強類型爲「寵物」的模板或視圖文件。要將複雜類型分配給模板/視圖,只需使用html mvc helpers Html.ControlFor。在因爲你不是用一個簡單的HTML控件處理像一個文本框這個特殊的情況下,你會使用:

Html.EditorFor(model => model.Pet, "Pet") 

在這裏你可以看到,你是把視圖模型「寵物」的一個實例爲強類型化視圖稱爲「寵物」,以便在提交原始視圖表單時取回完整的數據填充視圖模型。

這是一個非常強大的方式來簡化和封裝更復雜,更大規模的網站中的數據。