所以......我必须得到某人的旧版(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指令或程序集引用?)
所以对我来说很明显,它并没有意识到我们想要背后的代码。
我猜这是明显的,但我从未以这种方式组织我的代码。
答案 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
访问母版页