天天看點

試問CodeFile、CodeBehind深幾許?CodeBehindCodeFile     Web Site:Web Application

      到了One Week One Blog的時間了,最近在學習牛楠遇到了一個問題,寫在這裡記錄一下成長過程吧。ps忘記了截圖,是以借了一張圖過來、遇到了這樣的問題:

試問CodeFile、CodeBehind深幾許?CodeBehindCodeFile     Web Site:Web Application

     Web上類似的問題還挺多的,百度了一番之後,光明還不是太明朗;不過知識間都是互相貫通的,找不當當事人,那我就找近鄰“codefile”吧

<span style="font-family:FangSong_GB2312;font-size:18px;">< %@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"Inherits="WebApplication1.WebForm1" %>CodeBehind</span>
           

CodeBehind

   指定包含與頁關聯的類的已編譯檔案的名稱。該屬性不能在運作時使用。

CodeFile    

   指定指向頁引用的代碼隐藏檔案的路徑。此屬性與 Inherits 屬性一起使用可以将代碼隐藏源檔案與網頁相關聯。此屬性僅對編譯的頁有效。

九連環找到Web Site和Web Application

Web Site:

      當使用VS.NET建立頁面時,VS自動建立一個CodeBehind檔案,當我們編譯站點時,VB.ET自動根據頁面檔案内容,生成臨時的"partial"類,然後把這個partial類和CodeBehind中的partail類整合編譯,最後生成一個位于bin中的dll檔案。(codefile實作)

Web Application

       當我們頁面上加入一個新控件時,VS.NET自動回在CodeBehind代碼中增加一個protect對象的申明(partial類),并在代碼中使用和操作這個對象,VS.NET會時刻維護頁面檔案的控件與Partail類代碼檔案的申明之間同步。當我們編譯站點時,VS.NET将所有CodeBehind檔案編譯在一起,生成一個位于bin目錄中的dll檔案。(codebehind來實作)

       是以使用者控件申明應該用CodeBehind而不能用codefile,原因是web application的頁面用的是CodeBehind方式,如果頁面的使用者控件又用codefile方式來編譯的化,就會出現沖突,頁面優先于使用者控件直接把所有代碼檔案程式設計層dll,而不是吧頁面生成一個partial類再和代碼檔案一起編譯,使用者頁面控件将不會被VB.NET根據頁面内容生成一個臨時類和Codebehind中的partial類整合編譯,缺少對使用者控件的聲明,進而會出現一些問題。

再和代碼檔案一起編譯,頁面的使用者控件将不會被VS.NET根據頁面内容生成一個臨時類

       SO用CodeBehind就OK了?是這個意思嗎?但是紅線依舊,這個……改成codefile就沒有問題了,其中緣由、還是需要繼續研究一下。

參考:

    http://www.360doc.com/content/11/1221/20/6856598_174058525.shtml

                    thanks for your time,歡迎大家多多指教;GanBaDei!!!