2017-01-27 23 views
0

Итак ... Мне нужно получить чей-то старый (2010) .Net 3.5 C# код, работающий ... и, конечно же, у разработчиков еще не было файлов проекта источник ...Класс доступа к главной странице в C# .Net 3.5

Длинная история - это код, который пытается получить доступ к свойству класса главной страницы, и похоже, что он должен работать в соответствии со всем, что я могу найти, но это не так.

Пример кода 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; 
    } 
} 

У меня 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

Спасибо. Работы, я подумал, что это было что-то глупое ... только о том, что я не пробовал ... как черт этот код когда-либо работал вне меня ... – 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