ASP.NET-Taste sagt es nicht die Methode finden Ich habe in OnClick
-
22-07-2019 - |
Frage
Ich habe einen Abmeldeknopf auf meinem Haupt-Menü und ich möchte es, ein Verfahren laufen, um sich abzumelden. Allerdings mag ich als statische Methode diese Methode in einer separaten Klasse speichern, da dieser Code von anderen Standorten kann auch genannt werden.
Compiler Fehlermeldung:
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?)
Meine Extension Klasse:
namespace ExtensionMethods
{
public static class MyExtensionMethods
{
public static void Logout(object sender, EventArgs e)
{
//Logout Code
}
}
}
Meine Taste:
<asp:LinkButton runat="server" OnClick="ExtensionMethods.MyExtensionMethods.Logout" Text="Log Out"></asp:LinkButton>
Ideen?
Lösung
Sie müssen den Button-Klick auf den Code-behind zu handhaben und lassen Sie sich Ihre statische Methode in anderen Klasse aufrufen.
<asp:LinkButton id="button1" runat="server"
OnClick="LinkButton_Click" Text="Log Out"></asp:LinkButton>
-Code-behind:
void LinkButton_Click(Object sender, EventArgs e)
{
ExtensionMethods.MyExtensionMethods.Logout(sender, e);
}
Andere Tipps
Ihre Event-Handler sollten wirklich in der Seitenklasse sein und nicht statisch sein. Es soll im Idealfall sein, geschützt, aber es kann öffentlich sein.