2009-08-26 98 views
5

由於各種原因,我更喜歡我的asp.net mvc視圖的強類型viewdata,實際上我更喜歡帶有codebehinds的視圖,因爲它們在早期的asp.net mvc預覽中,因爲代碼隱藏是一個定義poco viewdata類的自然地方,因爲它們通常與實際視圖具有1:1的關係。asp.net mvc views and strong typed viewdata

有沒有辦法在asp.net rtm視圖中擁有代碼隱藏或者這不是一個好方法?

編輯: 我想隱藏代碼的唯一原因是我將ViewData視爲視圖的屬性。如果視圖是一個類,那麼ViewData就是它的一個屬性,在一個單獨的程序集中定義它是不自然的。

回答

6

經過近一年的MVC,我可以確認我並不需要代碼隱藏一次即可。如果你使用代碼隱藏,你可能仍然在考慮WebForms。算了吧。

視圖應該只顯示模型數據。像應用什麼CSS類的簡單決策可以直接在服務器標籤內的視圖中執行。更復雜的決策應該交給控制器或業務邏輯。

+0

但是,你使用強類型的viewdata,並且你在哪裏定義這些類? – terjetyl

+0

這些類應該在它們自己的程序集中 - MyProject.Models,對於較大的項目,應該在MyProject.ViewModels(或.DTO)中。 – Jason

+0

@TT:是的,我使用強類型視圖。我將模型放在「模型」文件夾中。模型基本上代表了一個單獨的薄層,其中包含準備好的數據以供顯示。 – 2009-08-26 11:36:38

0

代碼隱藏用於視圖違背了MVC框架的目的之一。

該視圖應該儘可能簡單,只需將注意力集中在表示上,同時讓Controller或Extensions處理所有業務邏輯。

那些與ViewState的組合應該刪除代碼隱藏的需要。

0

與Web Forms一樣,MVC體系結構中不需要代碼。

整個MVC架構建立在控制器的控制器上,而不是控制事件的魔術。

就我個人而言,我只是進入MVC的黑暗面,但我喜歡我現在看到的東西。

您可以輕鬆地在您的視圖中添加內容,並在您的操作中使用「返回視圖(項目)」 - >項目可以強制鍵入數據並在您的模型中輕鬆驗證它。 (這是偉大的,因爲輸入錯誤將在視圖中顯示)

1

我喜歡強類型的可視數據爲 我的asp.net mvc的看法各種 原因

這仍然可以ofcourse完成。 NerdDinner FormviewModels page 6 我使用它,它完美的作品。有一些問題,你可以在我的兩個問題herehere 中找到。

如上所述,我不明白你爲什麼要使用代碼隱藏。如果你想要的話,我建議你閱讀關於MVC結構的一般信息和哪些視圖。