Usuário com melhor resposta
Como invocar um WebForm com <Tipo Generic>?

Pergunta
-
No Windows Forms, eu criei um formulário desta forma:
public partial class MeuWindowsForm <T>: Form { ... }
E invoco desta maneira:
MeuWindowsForm<MinhaClasse> meuWindowsForm = new MeuWindowsForm<MinhaClasse>(); meuWindowsForm.ShowDialog();
No Windows Form funciona normalmente, mas como faço o equivalente em WebForm?
Eu criei um formulário WebFom desta maneira:
public partial class MeuWebForm <T>: System.Web.UI.Page
{ ... }
Tentei invocar desta maneira:
MeuWebForm<MinhaClasse> meuWebForm = new MeuWebForm<MinhaClasse>(); meuWebForm.Response.Redirect("MeuWebForm.aspx");
Mas dá erro na segunda linha:
"Response is not available in this context."
Tentei também:
meuWebForm.Server.Transfer("MeuWebForm.aspx");
E dá a mensagem:"Error executing child request for MeuWebForm.aspx."
Kiyoshi Kobayashi
- Editado Kiyoshi Kobayashi quinta-feira, 8 de março de 2012 18:36
Respostas
-
Olá Kiyoshi,
Enquanto a página não for executado o método PreInit da página o contexto dela não existe e não será possível fazer o Response.
Neste caso, se vc estiver executando este código dentro de uma página, vc deve apenas fazer:
MeuWebForm<MinhaClasse> meuWebForm = new MeuWebForm<MinhaClasse>(); Response.Redirect("MeuWebForm.aspx");
[]s!Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Marcado como Resposta Harley Araujo segunda-feira, 12 de março de 2012 13:23
-
Não sei o que exatamente você está tentando fazer, mas talvez essa seja a solução:
Crie uma classe que herde de System.Web.UI.Page assim:
using System; using System.Collections.Generic; using System.Web; public class PaginaPai<T> : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("Teste"); } }
Dai para cada página você pode herdar este tipo passando o tipo genérico assim:
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : PaginaPai<ClasseTeste> { }
Dai para cada classe que você for passar como genérico você cria uma página diferente. Porque eu acho que você não vai conseguir invocar o formulário da forma que você está tentando.
Não sei se deu para entender, qualquer coisa só perguntar. Dá uma olhada no código do projeto:
http://db.tt/BrJcEjnn
Se achar outra solução por favor poste, para que agente aprenda tb ;)
http://samuelcazelli.blogspot.com/
- Editado Samuel_Cazelli sexta-feira, 9 de março de 2012 11:21
- Sugerido como Resposta Samuel_Cazelli sexta-feira, 9 de março de 2012 19:22
- Marcado como Resposta Harley Araujo segunda-feira, 12 de março de 2012 13:23
Todas as Respostas
-
Olá Kiyoshi,
Enquanto a página não for executado o método PreInit da página o contexto dela não existe e não será possível fazer o Response.
Neste caso, se vc estiver executando este código dentro de uma página, vc deve apenas fazer:
MeuWebForm<MinhaClasse> meuWebForm = new MeuWebForm<MinhaClasse>(); Response.Redirect("MeuWebForm.aspx");
[]s!Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Marcado como Resposta Harley Araujo segunda-feira, 12 de março de 2012 13:23
-
Não sei o que exatamente você está tentando fazer, mas talvez essa seja a solução:
Crie uma classe que herde de System.Web.UI.Page assim:
using System; using System.Collections.Generic; using System.Web; public class PaginaPai<T> : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("Teste"); } }
Dai para cada página você pode herdar este tipo passando o tipo genérico assim:
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : PaginaPai<ClasseTeste> { }
Dai para cada classe que você for passar como genérico você cria uma página diferente. Porque eu acho que você não vai conseguir invocar o formulário da forma que você está tentando.
Não sei se deu para entender, qualquer coisa só perguntar. Dá uma olhada no código do projeto:
http://db.tt/BrJcEjnn
Se achar outra solução por favor poste, para que agente aprenda tb ;)
http://samuelcazelli.blogspot.com/
- Editado Samuel_Cazelli sexta-feira, 9 de março de 2012 11:21
- Sugerido como Resposta Samuel_Cazelli sexta-feira, 9 de março de 2012 19:22
- Marcado como Resposta Harley Araujo segunda-feira, 12 de março de 2012 13:23