graceting

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

<@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

 

代码 

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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)是正确的。

这个错误!

还望那位高手指教~~~~~

posted on 2014-04-21 15:46  IT-tingting  阅读(658)  评论(0编辑  收藏  举报