ASP.NET Web應(yīng)用程序修改頁面Inherits示例
<@page 中 Codebehind 、Inherits 和aspx的關(guān)系
CodeBehind
指定包含與頁關(guān)聯(lián)的類的已編譯文件的名稱。該屬性不能在運(yùn)行時使用。
說明:
提供此屬性是為了與以前版本的 ASP.NET 的兼容,以實現(xiàn)代碼隱藏功能。在 ASP.NET 2.0 版中,應(yīng)改用 CodeFile
屬性指定該源文件的名稱,同時使用 Inherits 屬性指定該類的完全限定名稱。
CodeFile
指定指向頁引用的代碼隱藏文件的路徑。此屬性與 Inherits
屬性一起使用可以將代碼隱藏源文件與網(wǎng)頁相關(guān)聯(lián)。此屬性僅對編譯的頁有效。
Inherits
定義供頁繼承的代碼隱藏類。它可以是從 Page 類派生的任何類。此屬性與 CodeFile 屬性一起使用,后者包含指向代碼隱藏類的源文件的路徑。Inherits 屬性在使用 C# 作為頁面語言時區(qū)分大小寫,而在使用 Visual Basic 作為頁面語言時不區(qū)分大小寫。
如果 Inherits 屬性不包含命名空間,ASP.NET 將檢查 ClassName 屬性是否包含命名空間。如果包含,ASP.NET 將試圖使用 ClassName 屬性的命名空間加載 Inherits 屬性中引用的類。(這假定 Inherits 屬性和 ClassName 屬性使用同一命名空間。)
有關(guān)代碼隱藏類的更多信息,請參見 ASP.NET 網(wǎng)頁代碼模型。
ClassName
一個字符串,指定在請求頁時將進(jìn)行動態(tài)編譯的頁類的名稱。此值可以是任何有效的類名,并且可以包括完全限定的類名。如果未指定該屬性的值,則已編譯頁的類名將基于頁的文件名并使用默認(rèn)命名空間
ASP。如果指定的 ClassName 屬性的值沒有完整的命名空間,將結(jié)合使用命名空間 ASP 與指定的類名以創(chuàng)建完全限定的類名。
其他頁可以通過使用 @ Reference 指令來引用分配給第一頁的類名。
說明:
可以使用 .aspx 頁的完全限定類名在代碼隱藏頁類中引用關(guān)聯(lián)的 .aspx
頁類的成員。但是,如果預(yù)編譯啟用了源代碼保護(hù)的網(wǎng)站,則代碼隱藏頁類與 .aspx
頁類不在同一程序集中。因此,代碼隱藏文件中引用的類將不起作用。有關(guān)預(yù)編譯的更多信息,請參見 ASP.NET 預(yù)編譯概述。
Src
指定包含鏈接到頁的代碼的源文件的路徑。在鏈接的源文件中,可以選擇將頁的編程邏輯包含在類中或 代碼聲明塊中。
可以使用 Src 屬性將生成提供程序鏈接到頁。有關(guān)更多信息,請參見 BuildProvider 類。另外,在低于 2.0 版的 ASP.NET 中,Src 屬性是另一種將代碼隱藏文件鏈接到頁的方法。在 ASP.NET 2.0 中,將代碼隱藏源文件鏈接到頁的首選方法是使用 Inherits 屬性來指定類,并使用 CodeFile 屬性來指定該類的源文件的路徑。
demo
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="liuxiang.InheritClass" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www./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進(jìn)行加殼這樣對代碼可以進(jìn)行一個有效的保護(hù)
不過這種方式在asp.net web應(yīng)用程序中可執(zhí)行!但是在如果是Web網(wǎng)站這種方式好像不行一直提示
ASPNET: 請確保此代碼文件中定義的類與“inherits”屬性匹配,并且該類擴(kuò)展的基類(例如 Page 或 UserControl)是正確的。
這個錯誤!
還望那位高手指教~~~~~