codebehind和src的區別

在 ASP.NET 中使用代碼隱藏方法來設計Web 窗體,可使頁代碼能夠更清晰地從 HTML 內容中分離到完全單獨的文件中。
通常一個 @page 指令如下:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>

其中有三個屬性(Inherits、Src、CodeBehind)非常容易混淆,下面分別給予說明。

Inherits

Inherits 屬性用於定義當前 Web 窗體所繼承的代碼隱藏類(該類是 System.Web.UI.Page 的派生類)。
這個 inherits 屬性只用於採用代碼隱藏方式編寫的 Web 窗體,也就是,如果你的代碼全都是在 Web 窗體的 
<script runat="server"></script> 標籤中,就不必用這個屬性了。 

Src

Src 屬性用於指定“代碼(隱藏)文件”在文件系統中的位置,以便於 ASP.NET Framework 用 Just-In-Time (JIT) 
編譯器動態編譯 Web 窗體時能夠找到它。用 Inherits 指明的類,就是放在這個類代碼(隱藏)文件中。
通常 ASP.NET Framework 使用這些類時,首先會到已編譯的程序集中查找,
如果找不到就會把在 Src 屬性中提供的代碼文件重新編譯,所以 Src 屬性和 Inherits 屬性並不互斥。

需要說明的是,Visual Studio .NET 並不使用 Src 屬性,
這就意味着 Visual Studio .NET 總是指望你用“生成”菜單中的生成操作來產生已編譯的程序集
(通常是編譯成DLL放在/bin目錄中,這樣一來,在發佈應用系統時,就可以不用發佈源代碼了),
而以後不會發生需要動態編譯的情況。所以如果你是在 Visual Studio .NET IDE 中開發的話,
要時常注意用“重新生成”功能來編譯發生變動的類,否則,將會發生諸如找不到類呀什麼的一系列問題。

Codebehind

呵呵,Codebehind 屬性並不是一個真正的 ASP.NET 屬性,在ASP.NET 文檔中是找不到它的。
它其實只是一個 Visual Studio .NET 屬性,
Visual Studio .NET 就是借用這個屬性來很好地跟蹤管理項目中的 Web 窗體和與之相對的代碼隱藏文件,
比如當你在設計環境中往 Web 窗體上放入一個服務器控件時,
Visual Studio .NET 將自動找到與該 Web 窗體相對應的代碼隱藏文件,並自動插入相關的代碼。
因此,用 Visual Studio .NET 作開發時,不可輕率地將 Codebehind 屬性換成 Src 屬性,他們的功能作用不同。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章