ASP.NET“@Master”指令:“ClassName”和“Inherits”属性之间的区别

时间:2013-12-19 23:16:03

标签: asp.net master-pages

根据我的阅读,ClassName指令上的Inherits@ Master属性似乎做了几乎相同的事情。我读过this page on MSDN和许多其他来源,我仍然感到困惑。 This forum page似乎表明Inherits属性指定了在运行时代表母版页的类的名称。 MSDN页面更模糊,似乎也说了同样的话。这样,它也将是代码隐藏文件中指定的分部类的名称。

阅读MSDN上的ClassName属性,似乎意味着同样的事情。我在我的代码中尝试了很多实验,但仍然无法使用。

这两个属性究竟做了什么,它们之间有什么区别?

最终,我希望实现的是允许我的.aspx页面访问母版页代码隐藏文件中的公共方法,如几篇文章including this one所述。

1 个答案:

答案 0 :(得分:2)

当我们使用内联代码[意味着所有HTML和服务器端代码都包含在单个页面中]时,

ClassName用于为页面命名。因此,当我们在aspx页面中使用服务器端代码时,只应使用脚本块来使用此属性,例如:

<script runat="server">
    void Page_Load(object sender, EventArgs e)
    {
           welcomeLabel.Text = "Hi There";
     }
</script>

这可以用于页面或用户控件。

At run time, a single-file page is treated as a class that derives from the Page class. AND THIS CLASS SHOULD HAVE A NAME

由于没有单独的C#代码文件[也称为Code Behind文件],因此没有明确定义的类。为了给页面的类命名,正在使用ClassName属性。

继承属性::

如果我们将页面的服务器端代码放在.cs文件中,那么我们只应使用Inherits属性。

编译Web表单时,将解析其页面并生成并编译新类。此新类派生自inherits关键字中标识的类。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LINQ2Entities.aspx.cs"
         Inherits="LINQ2Entities" %>