<@page 中 Codebehind 、Inherits 和aspx的關係
CodeBehind
指定包含與頁關聯的類的已編譯檔案的名稱。該屬性不能在運行時使用。
說明:
提供此屬性是為了與以前版本的 ASP.NET 的相容,以實現程式碼後置功能。在 ASP.NET 2.0 版中,應改用 CodeFile 屬性指定該源檔案的名稱,同時使用 Inherits 屬性指定該類的完全限定名稱。
CodeFile
指定指向頁引用的程式碼後置檔案的路徑。此屬性與 Inherits 屬性一起使用可以將程式碼後置源檔案與網頁相關聯。此屬性僅對編譯的頁有效。
Inherits
定義供頁繼承的程式碼後置類別。它可以是從 Page 類派生的任何類。此屬性與 CodeFile 屬性一起使用,後者包含指向程式碼後置類別的源檔案的路徑。Inherits 屬性在使用 C# 作為頁面語言時區分大小寫,而在使用 Visual Basic 作為頁面語言時不區分大小寫。
如果 Inherits 屬性不包含命名空間,ASP.NET 將檢查 ClassName 屬性是否包含命名空間。如果包含,ASP.NET 將試圖使用 ClassName 屬性的命名空間載入 Inherits 屬性中引用的類。(這假定 Inherits 屬性和 ClassName 屬性使用同一命名空間。)
有關程式碼後置類別的更多資訊,請參見 ASP.NET 網頁代碼模型。
ClassName
一個字串,指定在請求頁時將進行動態編譯的頁類的名稱。此值可以是任何有效類名,並且可以包括完整類名。如果未指定該屬性的值,則已編譯頁的類名將基於頁的檔案名稱並使用預設命名空間 ASP。如果指定的 ClassName 屬性的值沒有完整的命名空間,將結合使用命名空間 ASP 與指定的類名以建立完整類名。
其他頁可以通過使用 @ Reference 指令來引用分配給第一頁的類名。
說明:
可以使用 .aspx 頁的完全限定類名在程式碼後置頁類中引用關聯的 .aspx 頁類的成員。但是,如果先行編譯啟用了原始碼保護的網站,則程式碼後置頁類與 .aspx 頁類不在同一程式集中。因此,程式碼後置檔案中引用的類將不起作用。有關先行編譯的更多資訊,請參見 ASP.NET 先行編譯概述。
Src
指定包含連結到頁的代碼的源檔案的路徑。在連結的源檔案中,可以選擇將頁的編程邏輯包含在類中或 代碼聲明塊中。
可以使用 Src 屬性將產生提供者連結到頁。有關更多資訊,請參見 BuildProvider 類。另外,在低於 2.0 版的 ASP.NET 中,Src 屬性是另一種將程式碼後置檔案連結到頁的方法。在 ASP.NET 2.0 中,將程式碼後置源檔案連結到頁的首選方法是使用 Inherits 屬性來指定類,並使用 CodeFile 屬性來指定該類的源檔案的路徑。
demo
代碼
Inherits 屬性為命名空間(liuxiang)+類名稱(InheritClass) InheritClass需繼承Page
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="liuxiang.InheritClass" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:Label ID="labName" runat="server" ></asp:Label>
<asp:Button ID="btnName" runat="server" Text="確定" onclick="Button1_Click"/>
</div>
</form>
</body>
</html>
Default.aspx.cs 中的代碼 由於<%@ Page 中Inherits指向的是類InheritClass所以在代碼檔案中無法引用到頁面中的任何控制項
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace liuxiang
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
InheritClass代碼 繼承System.Web.UI.Page 可直接引用控制項
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
namespace liuxiang
{
public partial class InheritClass : System.Web.UI.Page
{
//TextBox txtName;
//Label labName;
//Button btnName;
protected void Button1_Click(object sender, EventArgs e)
{
labName.Text = this.txtName.Text;
}
}
}
這種方式可以有個好處能把頁面中所有的代碼都封裝到類檔案中然後可以對這個dll進行加殼這樣對代碼可以進行一個有效保護
不過這種方式在asp.net web應用程式中可執行!但是在如果是Web網站這種方式好像不行一直提示
ASPNET: 請確保此代碼檔案中定義的類與“inherits”屬性匹配,並且該類擴充的基類(例如 Page 或 UserControl)是正確的。
這個錯誤!
還望那位高手指教~~~~~