2012-03-30 12 views
2

Ich versuche, auf eine Funktion zuzugreifen, die in Master-Code-behind von einer anderen ASPX-Seite wie folgt platziert wird.ASPX Zugriff auf Masterseitenfunktion

Main.master.cs:

public partial class Main : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ... 
    } 

    public static bool test() 
    { 
     return true; 
    } 
} 

Product.aspx:

<%@ Page Language="C#" MasterPageFile="~/Main.master" EnableEventValidation="false" 
AutoEventWireup="true" ValidateRequest="false" CodeFile="Product.aspx.cs" Inherits="Common_Product" Title="Product" %> 
... 
<asp:Label id="test123" runat="server" /> 

Product.aspx.cs:

using SiteABC.Accelerate; 
public partial class Common_Product : SiteABC.Accelerate.SerializePageViewState 
{ 
    private void Page_Load(Object sender, EventArgs e) 
    { 
     Main cm = (Main)Page.Master; 
     test123.Text = "yo | " + cm.test(); 
    } 
} 

Dies führt zu einem Compiler-Fehler:

Compiler Error Message: CS0176: Member 'Main.test()' cannot be accessed with an instance reference; qualify it with a type name instead 

Was ist falsch in diesem Szenario?

Vielen Dank.

+0

Ihre 'test' Methode mit dem' static' Schlüsselwort sein definiert ist. Hier sind einige Links, um mehr zu erfahren: [Compilerfehler CS0176] (http://msdn.microsoft.com/en-us/library/zhcxt2bd (v = vs.80) .aspx), [Statische Klassen und statische Klassenmitglieder] (http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx) –

+0

@CAbbott, ich glaube, es war nur ein Tippfehler, Sie können nicht wirklich eine Methode wie folgt definieren ... – walther

Antwort

2

Versuchen Sie folgendes:

public partial class Main : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    ... 

    } 

    public bool test() 
    { 
     return true; 
    } 
} 
0

Fehler sagte es ganz klar, Sie nicht statische Methoden mit einer Instanz Referenz zugreifen können. Sie müssen es so machen:

test123.Text = "yo | " + Main.test(); 

Allerdings bin ich mir nicht sicher, ob es die beste Praxis ist Methoden wie diese zu Ihrem Masterpage zu setzen ... Sie sollten eine neue Klasse und verwenden, die stattdessen erstellen.

0

Ihren Test-ändern, so dass es eine Eigenschaft ist

public partial class Main : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ... 
    } 

    public Property bool test() 
    { 
     get { return true; } 
    } 
} 
0

Sie nicht statische Methode mit Instanz-Objekt zugreifen kann.

Es sollte

Main.test(); 
Verwandte Themen