2017-01-27 1 views
0

Also ... Ich muss jemanden alten (2010) .Net 3.5 C# Code arbeiten ... und natürlich hatte der Entwickler nicht mehr die Projektdateien nur die Quelle ...Access Master Page-Klasse in C# .Net 3.5

Lange Geschichte ist Code versucht, auf eine Eigenschaft der Masterseitenklasse zuzugreifen und das sieht aus wie es sollte funktionieren nach allem, was ich finden kann, aber es ist nicht.

Beispiel des Master Code hinter:

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

Einer der Seiten Code:

<%@ 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"> 

Und schließlich der Code hinter für die Seite:

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

Ich habe tr ied die Mastertype zu virtuellen Pfad zu ändern ... nichts ... Fehler Ich erhalte ist:

E'System.Web.UI.MasterPage ‚PageID‘ enthält keine Definition für enthalten‘und keine Erweiterungsmethode ‚PageID‘ ein erstes Argument vom Typ ‚System.Web.UI.MasterPage‘ akzeptieren konnte gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

mir so offensichtlich es ist, dass es nicht Abholung die Tatsache, dass wir den Code dahinter haben wollen.

Ich vermute, das ist etwas offensichtlich, aber ich habe meinen Code nie so organisiert.

+0

verdächtig erben: '<% @

In der Basepage Klasse so etwas wie dies dort sein könnte MasterType TypeName = "ISLMasterPage"%> '. Scheint, dass die Seite einen abgeleiteten Typ als die Vorgabeseite erwartet ... – user1429080

Antwort

4

Ihr Code nicht wissen, dass der Masterseite ein „myMasterPage“

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

Danke Works, ich dachte mir, es war etwas albern ... nur das einzige, was ich nicht versucht habe ... wie zum Teufel dieser Code jemals funktioniert hat, ist mir ein Rätsel ... – Torvos

0

Es scheint, Ihren Code ein BasePage

public partial class Help : BasePage 

die normale System.Web.UI.Page Sie überschreibt und einfachen Zugang ermöglicht geerbt hat zu Eigenschaften auf jeder Seite, auf der BasePage verwendet wird.

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

die Master-Seite zugänglich ist immer mit master auf den Seiten in diesem Beispiel, dass diese BasePage