2008-09-16 56 views
122

是什麼在ASP.NET用戶控件的聲明的CodeFile = 「file.ascx.cs」 和代碼隱藏 = 「file.ascx.cs」 之間的區別?的CodeFile VS代碼隱藏

是一個更新還是推薦?或者他們有具體的用法?

回答

149

CodeBehind:需要編譯(ASP.NET 1.1模型)。編譯後的二進制文件放在網站的bin文件夾中。在部署之前,您需要在Visual Studio中進行編譯。如果您不希望源代碼以純文本形式查看,那麼這是一個很好的模型。例如,向客戶提供您沒有義務提供代碼的客戶。

CodeFile:您爲源文件提供部署解決方案。 ASP.NET 2.0運行時在需要時編譯代碼。編譯的文件位於Microsoft.NET [.NET版本] \ Temporary ASP.NET文件中。

+2

那麼,這是否意味着開發人員必須手動更改Page指令的屬性,或者是否有創建一個Web項目的方法,默認情況下,每次添加新網頁時都會選擇代碼隱藏或代碼文件? – 2009-11-05 08:42:52

+34

我看到它的方式是CodeFile是爲了用於「WebSite」而Codebehind是用於「Web Application Project」,因爲它需要被編譯。因此,在將「網站」轉換爲「Web應用程序項目」時,我們可能需要手動將所有CodeFile事件更改爲Codebehind! – renegadeMind 2010-06-03 12:50:23

4

Codebehind文件需要在運行前編譯,但在src中我們不需要編譯然後運行..只保存文件。

+1

`但是在src`中 - 你的意思是`但是在CodeFile`中? – mmcrae 2016-10-12 01:49:47

3

我正在使用Visual Studio Express 2012 for Web和使用.NET 4.0中的應用程序項目。在用於登錄和更改密碼頁面的文件背後的代碼中,我發現在聲明中需要CodeBehind和CodeFile的情況。

如果我不加樣

CodeFile=login.aspx.cs 

代碼文件引用的網頁,不分析,瀏覽器顯示分析器錯誤。我是否編譯該項目並不重要。

如果我不喜歡

CodeBehind=login.aspx.cs 

引用安全類像的MembershipUser加上後面的參考代碼在編譯時失敗,都和嘗試使用智能感知與像「類型或命名空間的MembershipUser不能出錯時被發現」。按照.NET 4.0框架的要求,我添加了對System.Web.ApplicationServices的引用。

我應該補充說,這些麻煩的文件正在使用IIS應用程序工具創建的網站內的應用程序中運行。當我從Visual Studio打開網站時,我對解析器錯誤或引用錯誤沒有任何困難。這種混淆只發生在Visual Studio中作爲項目打開應用程序時。