访问C#.Net 3.5中的Master Page类

时间:2017-01-27 18:58:51

标签: c# asp.net .net-3.5 master-pages

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

很长的故事是代码试图访问母版页类的属性,看起来它应该根据我能找到的所有内容工作,但事实并非如此。

后面的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'不包含'PageID'的定义,并且没有扩展方法'PageID'接受类型'System.Web.UI.MasterPage'的第一个参数可以找到(你是吗?)缺少using指令或程序集引用?)

所以对我来说很明显,它并没有意识到我们想要背后的代码。

我猜这是明显的,但我从未以这种方式组织我的代码。

2 个答案:

答案 0 :(得分:4)

您的代码并不知道您的母版页是&#34; myMasterPage&#34;

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

答案 1 :(得分:0)

您的代码似乎继承了BasePage

public partial class Help : BasePage

它会覆盖正常的System.Web.UI.Page,并且可以在使用BasePage的每个页面上轻松访问属性。

在BasePage类中可能会出现这样的情况:

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));
    }
}

在此示例中,始终可以在继承master

的网页上使用BasePage访问母版页