在 C# .Net 3.5 中访问母版页 class

Access Master Page class in C# .Net 3.5

所以...我必须让某人的旧 (2010) .Net 3.5 C# 代码正常工作...当然,开发人员不再有项目文件,只有源代码...

长话短说,代码正在尝试访问母版页 class 的 属性,根据我能找到的所有内容,这看起来应该可以正常工作,但事实并非如此。

MasterPage背后的代码示例:

public partial class myMasterPage : System.Web.UI.MasterPage
{
   private string pageName = "";
   public string PageName
   {
       get { return PageName; }
       set { pageName = value; }
   }

   private int pageID;
   public int PageID
   {
       get { return pageID; }
       set { pageID = value; }
   }
}

其中一个页面代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="Help" Codebehind="Help.aspx.cs" %>
<%@ MasterType TypeName="ISLMasterPage"  %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

最后是该页面的隐藏代码:

public partial class Help : BasePage
{
    protected void Page_PreInit(object sender, EventArgs e)
    {
        base.PageID = 1; 
        Master.PageID = 1;  
    }
}

我已经尝试将 MasterType 更改为虚拟路径...没有...我得到的错误是:

E'System.Web.UI.MasterPage' does not contain a definition for 'PageID' and no extension method 'PageID' accepting a first argument of type 'System.Web.UI.MasterPage' could be found (are you missing a using directive or an assembly reference?)

所以对我来说,很明显它没有意识到我们想要隐藏代码这一事实。

我猜这是显而易见的事情,但我从来没有以这种方式组织我的代码。

您的代码不知道您的母版页是 "myMasterPage"

protected void Page_PreInit(object sender, EventArgs e)
{
    base.PageID = 1; 
    (Master as myMasterPage).PageID = 1;  
}

您的代码似乎继承了 BasePage

public partial class Help : BasePage

它覆盖了正常的 System.Web.UI.Page 并允许轻松访问每个使用 BasePage 的页面上的属性。

在 BasePage class 中可能是这样的:

public class BasePage : System.Web.UI.Page
{
    public Site master;

    public BasePage()
    {
        this.Load += new EventHandler(this.Page_Load);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        master = ((Site)(Page.Master));
    }
}

在此示例中,在继承 BasePage

的页面上,始终可以使用 master 访问母版页