ASPNET MVC社區討論了在使用WebFormsViewEngine時是否仍然需要代碼隱藏文件以及這是一個優點還是缺點或甚至是一個問題
ASPNET MVC默認仍然使用WebFormsViewEngine當使用Visual Studio向ASPNET MVC應用程序增加一個WebForms視圖時會自動增加一個代碼隱藏文件和一個設計器文件許多人認為代碼隱藏文件已經被廢棄了它們的用法頗令人困惑因為開發人員傾向於使用像傳統的合而為一的ASPNET Web窗體那樣的視圖
Steve Smith更進一步的表明ASPNET MVC Codebehind文件的壞處因為他們引誘開發人員將邏輯添加到視圖上視圖在設計上應當保持啞的
代碼隱藏文件是一個誘惑對於不熟悉ASPNET MVC (ASPNET MVC還不到一年時間而且還沒有發布)但是有Web窗體開發背景(大多數)的開發人員他們始終有一個將代碼寫入隱藏代碼文件傾向這會使得在視圖裡的邏輯難以測試最壞的可能是甚至在代碼隱藏文件中包含的邏輯直接調用數據庫或者是web service以致完全繞過模型同視圖的分離
Steve解釋了在某種情況下代碼隱藏文件是一個不好但卻必不可少的東西例如你想在一個強類型的視圖通過強類型方式引用模型(Model)有寫人認為隱藏代碼頁也可用來存儲一些視圖邏輯而其他方式可能會弄亂ASPX文件最後但並不是最不重要的一點是他們為了在ASPX文件上獲得智能提示技術的支持至於第一個問題Tim Barcz演示了如何使用沒有代碼隱藏使用強類型的ViewData通過合並泛型的CLR表示法來取代C#或者VB的表示法
Inherits=
System
Web
Mvc
ViewPage`
[[ABCCompany
MVC
Web
Models
LoginData
ABCCompany
MVC
Web]]
CLR表示法在單引號後面指定了泛型參數的數量後面跟參數和包含參數類型的程序集
Luis Abreu不同意Steve的用法並在貼子做出了回應他說不能確定刪除隱藏代碼文件就可以彌補一個不合格程序員的不足因為邏輯仍然可以放在ASPX文件的腳本塊裡Luis也不同意啞視圖的一般觀點他認為視圖可能混合了展現的相關代碼並且這些代碼應該被放在隱藏代碼文件中而不是在控制器中或者直接寫在ASPX文件裡這樣會破壞標記和代碼之間的清晰分離
From:http://tw.wingwit.com/Article/program/net/201311/14848.html