2014-02-17 90 views
6

我的困惑是不是新來的或約於網絡,但是,我有一些問題,而我沒有在任何地方找到答案:ASP.NET的CodeFile,代碼隱藏和繼承

的第一個問題是:

爲什麼繼承CodeFile而不是CodeBehind?

我閱讀:http://msdn.microsoft.com/en-us/library/vstudio/ms178138(v=vs.100).aspx和一些更多的頁面,我明白CodeFile是用於源代碼和動態編譯,而另一個是用於彙編。這就提出了我一個問題:

爲什麼大家說的CodeBehind必須是一個裝配,如果我找到 File.aspx.cs隨處可見,包括一個測試項目我已經和它 就像一個魅力?這是一個編譯的程序集嗎?

但是,至於第一個問題,並基於我提供的網址,我可能明白,爲什麼繼承是必要的。我假設編譯器必須知道稍後要編譯的部分類的名稱。說得通。但是Codebehind也不一定需要它嗎?如果我們要合併部分類,我想我應該給我想要合併的名稱。我甚至嘗試在.cs文件中添加另一個部分類,並編譯/運行良好。

我在這裏錯過了什麼嗎?

我也讀過CodeBehind不再使用,它​​是CodeFile,新的CodeFile。

任何.NET大師能幫助我嗎?

謝謝大家提前。

更新:

我試圖實現使用上的代碼隱藏繼承任何事件。它沒有工作。這更有意義。但是CodeFile並不會抱怨編譯。這有什麼理由嗎?

回答

1

繼承屬性帶文件後面的代碼裏面寫的類名。您可以將多個類放在同一代碼後面,並在兩個不同的.aspx文件中繼承

1

CodeBehind文件提供了aspx頁面後面的代碼。當您添加一個新的「帶有CodeBehind的ASP.NET網頁」時,我們將其稱爲NewPage.aspx,還會創建2個文件,稱爲NewPage.aspx.cs和NewPage.aspx.designer.cs。 NewPage.aspx.cs是您的CodeBehind文件。正如Vijay所說,由於(C#)文件可以有多個類(與Java不同,類文件只能包含1個類,並且類名必須與文件名匹配),因此Inherits=[namespace].[class]指示您想要哪個類實際用於網頁。 CodeBehind屬性用於Web應用程序項目。另一方面,CodeFile屬性用於Web站點項目。