none
Variável do aspx.cs na master page RRS feed

  • Pergunta

  • Pessoal, boa noite.

    É possível, no code behind da master page, pegar uma propriedade que está na classe mãe do code behind do aspx.cs?


    --
    Gerson C. Júnior
    http://www.ekow.com.br

    quinta-feira, 27 de setembro de 2012 22:45

Respostas

  • Boa noite Gerson,

    A MasterPage é um controlo e como tal possui a propriedade Page.

    Sem usar qualquer mecanismo de Reflection a melhor solução é expor a propriedade através de um interface que a página implementa:

    public interface IMyInterface
    {
        string PropertyA{ get;}
    }
    public class MyPage : Page, IMyInterface
    {
        public string PropertyA { get; private set; }
    }

    e depois fazer o Cast no Masterpage.cs

    public class MyMasterPage : MasterPage
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            IMyInterface mypage = this.Page as IMyInterface;
            if(mypage != null)
            {
                string propA = mypage.PropertyA;
            }
        }
    }


    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta Gerson_Jr sexta-feira, 28 de setembro de 2012 00:27
    quinta-feira, 27 de setembro de 2012 23:49

Todas as Respostas

  • Boa noite Gerson,

    A MasterPage é um controlo e como tal possui a propriedade Page.

    Sem usar qualquer mecanismo de Reflection a melhor solução é expor a propriedade através de um interface que a página implementa:

    public interface IMyInterface
    {
        string PropertyA{ get;}
    }
    public class MyPage : Page, IMyInterface
    {
        public string PropertyA { get; private set; }
    }

    e depois fazer o Cast no Masterpage.cs

    public class MyMasterPage : MasterPage
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            IMyInterface mypage = this.Page as IMyInterface;
            if(mypage != null)
            {
                string propA = mypage.PropertyA;
            }
        }
    }


    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta Gerson_Jr sexta-feira, 28 de setembro de 2012 00:27
    quinta-feira, 27 de setembro de 2012 23:49
  • Obrigado Nuno Gomes.

    --
    Gerson C. Júnior
    http://www.ekow.com.br

    sexta-feira, 28 de setembro de 2012 00:27
  • Boa noite Gerson,

    A MasterPage é um controlo e como tal possui a propriedade Page.

    Sem usar qualquer mecanismo de Reflection a melhor solução é expor a propriedade através de um interface que a página implementa:

    public interface IMyInterface
    {
        string PropertyA{ get;}
    }
    public class MyPage : Page, IMyInterface
    {
        public string PropertyA { get; private set; }
    }

    e depois fazer o Cast no Masterpage.cs

    public class MyMasterPage : MasterPage
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            IMyInterface mypage = this.Page as IMyInterface;
            if(mypage != null)
            {
                string propA = mypage.PropertyA;
            }
        }
    }


    Nuno Gomes http://nunogomes.net

    Neste caso o Page_Load do code behind não é executado, tem como reverter isso?

    --
    Gerson C. Júnior
    http://www.ekow.com.br

    sexta-feira, 28 de setembro de 2012 02:53
  • Boas Gerson,

    Podes experimentar colocar o código do Page_Load no método OnLoad ou o contrário.


    Nuno Gomes http://nunogomes.net

    sexta-feira, 28 de setembro de 2012 09:53