Fazer uma PerguntaFazer uma Pergunta
 

RespondidoHerança com Web UserContols

  • terça-feira, 3 de novembro de 2009 15:08William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá

    Eu estou tentando fazer com que um Web UserControl seja herdado a partir de outro. Meu web user control base nao tem qualquer componete grafico (textboxes, labels, etc). Eu preciso só herdar propriedades, structs e métodos. Os componentes visuais serao colocados todos nos componentes filhos. No mundo WinForms isso funciona.

    Esta dando erro nessa parte:

    public partial class MyEmail : BaseTaskAttributes //Cannot resolve Symbol BaseTaskAttributes
    {
             protected TaskAttributes DoAnything()
            {
                TaskAttributes MyAttributes=new TaskAttributes {Email = "a@a.com"};
                return MyAttributes;
            }

    }

    onde

    public abstract class BaseTaskAttributes : System.Web.UI.UserControl
        {
            public struct TaskAttributes
            {
                public string Email;
                public DateTime ScheduleDate;
                public int Agent;
                public int IntervalsPay;
            }
        }

    Grato pela atençao

     William

Respostas

  • quarta-feira, 4 de novembro de 2009 10:34Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Ola William,


    É um pouco chatinho de fazer, pois possui algumas "restrições", mas funciona perfeitamente.

    Até escrevi um artigo de como fazer isto, porém ainda não consegui publicar, ando meio sem tempo. Então segue alguns links:


    Uma outra thread aqui do forum mesmo, pode te ajudar:
    http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/169b754d-dc7f-428d-ab4d-c4c47049ff6f

    Criando um WebCustomControl (video)
    http://www.linhadecodigo.com.br/VideoDotNet.aspx?id=50

    Creating a Web Custom Control
    http://www.15seconds.com/Issue/040421.htm


    Espero que ajude.


    Atenciosamente


    Obs.: se não for mais precisar desta thread marque alguma resposta como correta.

    Thiago Dorneles

Todas as Respostas

  • terça-feira, 3 de novembro de 2009 18:51William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Ola

    Eu consegui resolver o problema acima mas cai em outro.

    Agora eu estou obtendo a excessao:
    Make sure that the class defined in this code file matches the 'inherits' attribute, and that it extends the correct base class

    O que eu mudei foi a inclusao do codigo abaixo no arquivo ASCX
    <%@ Register TagPrefix="tsk" TagName="base" Src="~/BaseTaskAttributes.ascx" %>

    Agora ele reconhece BaseTaskAttributes como uma classe.

    Alguem ja fez isso, criar um WebUserControl  partir de outro? Nao era pra ser tao complicado. É a base de OOP. COmo eu disse antes, cansei de fazer isso em WinForms e nunca tiva problemas.

    Grato pela atençao

    William

  • terça-feira, 3 de novembro de 2009 18:55Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola William,


    Você tentou colocar a tag Namespace="BaseTaskAttributes"?



    Atenciosamente

    Thiago Dorneles
  • terça-feira, 3 de novembro de 2009 19:21William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola Thiago

    Nao tinha tentado, mas agora dá um outro erro:
    The 'namespace' attribute is not supported on this directive when a 'tagname' attribute is present

    Se eu tiro a diretiva 'tagname'  da outro erro:
    'tagname' is missing.

    Tipo da coisa: Se deixa ele da conflito, se tira ele sente falta.

    Ta dificil, e o pior que até agora eu nao achei nenhum exemplo de um webcontrol que deriva de outro webcontrol. Isso é impossivel de se fazer? Se for OOP deveria ser trivial.

    Grato pela atençao

    William
  • terça-feira, 3 de novembro de 2009 19:50Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola William,


    Você está importando este seu UserControl em dll?

    Se sim, o Register é disposto diferente.


    Atenciosamente


    Thiago Dorneles
  • terça-feira, 3 de novembro de 2009 19:58William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Nao.. Esta no mesmo projeto. Mas eu acabei de ler um artigo que diz que é impossivel herdar um WebUserControl de outro WebUserControl. Para isso eu tenho que criar um WebCustomControl. O jeito é correr atras disso e ver como funciona.

    Grato pela atençao

    William
  • quarta-feira, 4 de novembro de 2009 10:34Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Ola William,


    É um pouco chatinho de fazer, pois possui algumas "restrições", mas funciona perfeitamente.

    Até escrevi um artigo de como fazer isto, porém ainda não consegui publicar, ando meio sem tempo. Então segue alguns links:


    Uma outra thread aqui do forum mesmo, pode te ajudar:
    http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/169b754d-dc7f-428d-ab4d-c4c47049ff6f

    Criando um WebCustomControl (video)
    http://www.linhadecodigo.com.br/VideoDotNet.aspx?id=50

    Creating a Web Custom Control
    http://www.15seconds.com/Issue/040421.htm


    Espero que ajude.


    Atenciosamente


    Obs.: se não for mais precisar desta thread marque alguma resposta como correta.

    Thiago Dorneles