2009-10-30 47 views
0

我的主菜單上有一個註銷按鈕,我希望它運行註銷方法。不過,我想將此方法作爲靜態方法存儲在單獨的類中,因爲此代碼也可能從其他位置調用。ASP.NET按鈕說它無法找到我放入OnClick的方法

編譯器錯誤消息:

CS1061: 'ASP.adminpages_masterpages_adminsystem_master' does not contain a definition for 'ExtensionMethods' and no extension method 'ExtensionMethods' accepting a first argument of type 'ASP.adminpages_masterpages_adminsystem_master' could be found (are you missing a using directive or an assembly reference?)

我ExtensionMethods類:

namespace ExtensionMethods 
{ 
    public static class MyExtensionMethods 
    { 
     public static void Logout(object sender, EventArgs e) 
     { 
       //Logout Code 
     } 
    } 
} 

我的按鈕:

<asp:LinkButton runat="server" OnClick="ExtensionMethods.MyExtensionMethods.Logout" Text="Log Out"></asp:LinkButton> 

想法?

回答

2

您需要在代碼隱藏處理按鈕單擊,並讓它在其他類中調用您的靜態方法。

<asp:LinkButton id="button1" runat="server" 
     OnClick="LinkButton_Click" Text="Log Out"></asp:LinkButton> 

代碼隱藏:

void LinkButton_Click(Object sender, EventArgs e) 
    { 
     ExtensionMethods.MyExtensionMethods.Logout(sender, e); 
    } 

檢查更多的例子參考:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.click.aspx

+0

雖然它不在代碼隱藏中,但它在一個獨立的類中,它如何找到它? – NibblyPig 2009-10-30 09:38:16

+0

@SLC:好的,我修改了我的答案 – 2009-10-30 09:46:45

+0

我希望避免這種情況,並直接鏈接,但如果沒有其他方法,我會這樣做,歡呼。 – NibblyPig 2009-10-30 09:48:19

0

事件處理程序確實應該在頁面類,而不是靜態的。理想情況下,它應該受到保護,但它可以是公開的。

+0

@Kieron:你和我都誤解了他的問題。要觸發的功能不在頁面的範圍內。 :) – 2009-10-30 10:30:46

相關問題