Microsoft Developer Network >
Página Inicial dos Fóruns
>
Fóruns do Web Development
>
ASP .NET
>
Herança com Web UserContols
Herança com Web UserContols
- 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
- 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- Marcado como RespostaWilliam John Adam Trindade quarta-feira, 4 de novembro de 2009 14:12
Todas as Respostas
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- Ola William,
Você tentou colocar a tag Namespace="BaseTaskAttributes"?
Atenciosamente
Thiago Dorneles - 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 - Ola William,
Você está importando este seu UserControl em dll?
Se sim, o Register é disposto diferente.
Atenciosamente
Thiago Dorneles - 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 - 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- Marcado como RespostaWilliam John Adam Trindade quarta-feira, 4 de novembro de 2009 14:12

