天天看點

asp.net中@page指令的屬性Inherits、Src、CodeBehind差別

Inherits、Src、CodeBehind

在 ASP.NET 中使用代碼隐藏方法來設計Web 窗體,可使頁代碼能夠更清晰地從 HTML 内容中分離到完全單獨的檔案中。

通常一個 @page 指令如下:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" 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 屬性,他們的功能作用不同。

繼續閱讀