none
ASCX

    Pergunta

  • TchÊ, mas que tal... To com o seguinte problema: Tenho uma master page e nela tem um ASCX, referenciado e este por sua vez tem um label para exibir descrição de mensagem de erro. Como eu faço para que, a página que estiver aberta, quando der erro, mandar uma mensagem para o label dentro do controle ASCX da master page? Entederam?? Gracias.
    quarta-feira, 16 de maio de 2007 20:14

Respostas

  • Oi !

     

    Você não disse se está usando VB ou C#, isso dificulta um pouquinho :

     

    1) No controle ASCX, crie uma propriedade que exponha a mensagem do label :

     

    VB

     

    Code Snippet

    Public property Mensagem as string

    get

       return(meulabel.text)

    end get

    set (value as string)

    meulabel.text=value

    end set

    end property

     

     

    C#

     

    Code Snippet

    string Mensagem

    {

    get

    { return(meulabel.text); }

    set { meulabel.text=value; }

    }

     

    2) Na masterpage, crie uma propriedade que exponha o seu controle :

     

    VB

     

    Code Snippet

    Public readonly Property ControleErro as MeuAscX

    get

         return(NomeDaInstanciaDoMeuAscX)

    end get

    end property

     

     

     

    C#

     

    Code Snippet

    MeuAscX ControleErro

    {

    get

    { return(NomeDaInstanciaDoMeuAscX); }

    }

     

    3) ** É Sério ** na página de conteúdo, insira seu user control, depois delete-o em seguida.

     

    4) Na página de conteúdo, programe o seguinte, no local que desejar :

     

    VB

     

    Code Snippet

    directcast(me.master,minhamasterpage).ControleErro.Mensagem="minha mensagem de erro"

     

     

    C#

     

    Code Snippet
    ((minhamasterpage)this.master).ControleErro.Mensagem="minha mensagem de erro";

     

    []'s

     

     

     

     

     

    quarta-feira, 16 de maio de 2007 21:26

Todas as Respostas

  • Oi !

     

    Você não disse se está usando VB ou C#, isso dificulta um pouquinho :

     

    1) No controle ASCX, crie uma propriedade que exponha a mensagem do label :

     

    VB

     

    Code Snippet

    Public property Mensagem as string

    get

       return(meulabel.text)

    end get

    set (value as string)

    meulabel.text=value

    end set

    end property

     

     

    C#

     

    Code Snippet

    string Mensagem

    {

    get

    { return(meulabel.text); }

    set { meulabel.text=value; }

    }

     

    2) Na masterpage, crie uma propriedade que exponha o seu controle :

     

    VB

     

    Code Snippet

    Public readonly Property ControleErro as MeuAscX

    get

         return(NomeDaInstanciaDoMeuAscX)

    end get

    end property

     

     

     

    C#

     

    Code Snippet

    MeuAscX ControleErro

    {

    get

    { return(NomeDaInstanciaDoMeuAscX); }

    }

     

    3) ** É Sério ** na página de conteúdo, insira seu user control, depois delete-o em seguida.

     

    4) Na página de conteúdo, programe o seguinte, no local que desejar :

     

    VB

     

    Code Snippet

    directcast(me.master,minhamasterpage).ControleErro.Mensagem="minha mensagem de erro"

     

     

    C#

     

    Code Snippet
    ((minhamasterpage)this.master).ControleErro.Mensagem="minha mensagem de erro";

     

    []'s

     

     

     

     

     

    quarta-feira, 16 de maio de 2007 21:26
  • Dennes, você poderia explicar esse passo 3? Não entendi até agora essa história de adicionar e remover o controle. Só a propriedade que expõe o controle não seria suficiente?
    sexta-feira, 18 de maio de 2007 07:37
  • Oi !

     

    A compilação do ASP.NET mantém a página e o user control em arquivos .DLL diferentes. Ao inserir e remover o user control, a tag @Register é criada e mantida na página. Esta tag faz uma referência entre a DLL em que a página vai ficar e a DLL em que o user control vai ficar. Do contrário o tipo do user control não seria reconhecido e você teria vários problemas.

     

    []'s

     

     

    sexta-feira, 18 de maio de 2007 12:31
  • Aaah, tá. Você estava falando em inserir pelo modo design do VS, só pra criar essa tag. Pensei que era alguma coisa de código como:

     

    Dim Controle As New MeuControle()

    Me.Controls.Add(Controle)

    Me.Controls.Remove(Controle)

     

    Agora entendi.

     

    Obrigado.

    sexta-feira, 18 de maio de 2007 13:10