Pergunta

Eu tenho um log out botão no meu menu principal e eu quero que ele seja executado um método para fazer logout. No entanto eu quero armazenar este método em uma classe separada como um método estático, uma vez que este código pode ser chamado a partir de outros locais também.

mensagem de erro do compilador:

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?)

Minha classe ExtensionMethods:

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

Meu botão:

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

Idéias?

Foi útil?

Solução

Você precisa lidar com o botão de clique-para o código-behind e deixe que a chamada seu método estático em outra classe.

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

Código-behind:

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

Verifique a referência para mais exemplos: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.click.aspx

Outras dicas

O seu manipulador de eventos deve realmente estar na classe de página e não ser estática. Deve-se, idealmente, protegido mas pode ser público.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top