从 ascx 页面上的母版页访问变量

Access variable from master page on ascx page

我在 aspx 页面上有以下设置:

<%@ Page Title="" Language="C#" MasterPageFile="~/tt.master" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="tt_login" %>
<%@ MasterType VirtualPath="~/tt.master" %>

aspx.cs 页面上的这个:

public partial class tt_login : System.Web.UI.Page
{
    protected new ttUser User
    {
        get { return Master.User; }
        set { Master.User = value; }
    }

在这种情况下,ttUser 能够从母版页访问变量。

到目前为止一切正常。

接下来,我有一个 ascx 页面,具有以下设置:

<%@ Control Language="C#" MasterPageFile="~/tt.master" AutoEventWireup="true" CodeFile="ttRightNav.ascx.cs" Inherits="Controls_ttRightNav" %>
<%@ MasterType VirtualPath="~/tt.master" %>

在同一页上:

protected new ###.##.ttUser User
{
    get { return Master.User; }
    set { Master.User = value; }
}

只有这次它说 the name master does not exist in the current context

据我所知,设置完全相同 - 我不明白为什么它不起作用。

几个想法:

ascx 页面不在根文件夹中 - 但因为它使用 ~ 它引用根目录所以这应该无关紧要?

是因为这是一个ascx页面吗?

我错过了什么吗?

我已经尝试从 ascx.cs 页面引用 master 变量,但仍然有同样的问题。

基本上,如何在 ascx 页面上引用母版页中的变量?

我从母版页看到了一些关于投射的问题,但到目前为止还没有成功。

任何帮助将不胜感激 - 我完全被困住了!!!

编辑:

这不是上面提到的问题的重复 - 上面的问题是关于控件的 - 我正在尝试访问一个对象

  1. 制作ttuserpublic
  2. 尝试将母版页投射到特定的 class,然后获取需要的字段

tt_login loginPage = Page as tt_login;

tt_login loginPage = Master as tt_login;