2012-03-30 15 views
2

次のように、別のASPXページからマスターページコードビハインドに配置された関数にアクセスしようとしています。ASPXマスタページ機能へのアクセス

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

これは、コンパイラエラーになり:

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

このシナリオで何が問題になっていますか?

ありがとうございます。

+0

あなた 'test'メソッドは' static'キーワードで定義されていなければなりません。 [コンパイラエラーCS0176](http://msdn.microsoft.com/en-us/library/zhcxt2bd(v = vs80).aspx)、[静的クラスと静的クラスのメンバ] (http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx) –

+0

@CAbbott、私はそれがちょうどタイプミスだと思う、あなたは実際にこのようなメソッドを定義することはできません... – walther

答えて

2

これを試してみてください:

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

    } 

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

エラーはそれが非常に明確に、あなたは、インスタンス参照して、静的メソッドにアクセスすることはできませんと述べました。 あなたはこのようにそれを実行する必要があります。

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

しかし、私はそれはあなたのマスターページには、このようなメソッドを置くためのベストプラクティスだかはわからない...あなたはその代わりに、新しいクラスと使用を作成する必要があります。それはあなたがインスタンスオブジェクトを使用して静的メソッドにアクセスすることはできませんプロパティ

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

    public Property bool test() 
    { 
     get { return true; } 
    } 
} 
0
は、あなたのテストを変更

それは

Main.test(); 
0

だよう

関連する問題