2017-01-27 21 views
0

所以...我必须得到某人的旧(2010).Net 3.5 C#代码工作......当然,开发者不再有项目文件了源...在C#.Net 3.5中访问主页面类

长篇故事是代码正试图访问母版页类的属性,这看起来应该根据我可以找到的一切工作,但事实并非如此。母版代码的

实例背后:

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

我已经tr了ied将MasterType更改为虚拟路径...没有任何...我得到的错误是:

E'System.Web.UI.MasterPage'不包含'PageID'的定义,也没有扩展方法'PageID'接受类型'System.Web.UI.MasterPage'的第一个参数可能被发现(你是否缺少使用指令或程序集引用?)

因此对我而言,显然它并不是拾起我们希望隐藏代码。

我猜这是明显的东西,但我从来没有以这种方式组织我的代码。

+0

这看起来很可疑的网页:'<%@ MasterType TypeName =“ISLMasterPage”%>'。似乎该页面期望派生类型作为母版页... – user1429080

回答

4

您的代码不知道你的母版页是“myMasterPage”

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

感谢Works,我觉得这是愚蠢的东西......只是我没有尝试的唯一的东西......这个代码有史以来如何工作超越我... – Torvos

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