Asp.net 通过母版页访问内容页变量

Asp.net 通过母版页访问内容页变量,asp.net,master-pages,Asp.net,Master Pages,我知道在ASP.net中,我们可以通过内容页访问母版页变量,但是我们是否可以通过母版页访问内容页变量?是的,您可以。您必须实现一个基类,而内容类应该派生自该基类 编辑:发布标记并更改代码以获得更清晰的示例 我创建了一个继承System.Web.UI.page的基本页,然后让内容页继承它。我的主页: namespace WebApplication2 { public class BasePage : System.Web.UI.Page { public Base

我知道在ASP.net中,我们可以通过内容页访问母版页变量,但是我们是否可以通过母版页访问内容页变量?

是的,您可以。您必须实现一个基类,而内容类应该派生自该基类

编辑:发布标记并更改代码以获得更清晰的示例

我创建了一个继承System.Web.UI.page的基本页,然后让内容页继承它。我的主页:

namespace WebApplication2
{
    public class BasePage : System.Web.UI.Page
    {
        public BasePage() { }

        public virtual string TextValue()
        {
            return "";
        }

    }
}
以下是我的内容页标记:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>


<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <asp:Label ID="lblContentText" Text="Contentpage TextValue:" runat="server"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:Content>
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication2.SiteMaster" %>

<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <meta charset="utf-8" />
    <title><%: Page.Title %> - My ASP.NET Application</title>  
    <asp:ContentPlaceHolder runat="server" ID="HeadContent" />
</head>
<body>
    <form runat="server">    
    <header> </header>
    <div id="body">
        <asp:Label ID="lblText" runat ="server" Text="Masterpage Text :" />
        <asp:TextBox ID="txtMaster" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Click to read content page TextValue " OnClick="Button1_Click" />
        <asp:ContentPlaceHolder runat="server" ID="MainContent" />
    </div>
    <footer>
    </footer>
    </form>
</body>
</html>
我的母版页标记:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>


<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <asp:Label ID="lblContentText" Text="Contentpage TextValue:" runat="server"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:Content>
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication2.SiteMaster" %>

<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <meta charset="utf-8" />
    <title><%: Page.Title %> - My ASP.NET Application</title>  
    <asp:ContentPlaceHolder runat="server" ID="HeadContent" />
</head>
<body>
    <form runat="server">    
    <header> </header>
    <div id="body">
        <asp:Label ID="lblText" runat ="server" Text="Masterpage Text :" />
        <asp:TextBox ID="txtMaster" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Click to read content page TextValue " OnClick="Button1_Click" />
        <asp:ContentPlaceHolder runat="server" ID="MainContent" />
    </div>
    <footer>
    </footer>
    </form>
</body>
</html>
如果您看到任何错误,如无法识别BasePase,请确保它使用相同的命名空间(即WebApplication2),或者将命名空间添加到实现页面(即使用WebApplication2;)


希望有帮助

谢谢!但是如何引用BasePages类呢?我收到一个编译错误,表明BasePages类缺少程序集引用。编译器错误消息:CS0246:找不到类型或命名空间名称“BasePages”(是否缺少using指令或程序集引用?)必须使用“mybasepagenamespace”将它们放在同一命名空间或母版页代码隐藏添加中-其中mybasepagenamespace是BasePage类的命名空间。我已经编辑了我的答案。即使我不得不乱搞名称空间,它仍然有效。谢谢CS0103:名称“TextBox1”在当前上下文中不存在