Usuário com melhor resposta
MVC View User Control

Pergunta
-
Olá,
Na minha briga com o MVC eu fiz um controller qual através de uma página aspx eu busco informações que são recebidas através do ViewData que está assim na herança do code behind:
Code Snippetpublic
partial class Teste : ViewPage<List<MeuItem>>A partir disso eu pego o ViewData para renderizar o meu MVC View User Control:
Code Snippet<%
=Html.RenderUserControl("UCTeste.ascx", ViewData)%>Onde o code behind do meu ASCX está assim:
Code Snippetpublic
partial class UCTeste : System.Web.Mvc.ViewUserControl<List<MeuItem>>Agora eu gostaria de saber como faço para no meu aspx eu chamar o controller sem precisar que o meu code behind do aspx herde ViewPage<List<MeuItem>> e fique somente herdando de ViewPage, para que depois eu passe um tipo List<MeuItem> para o RenderUserControl ?
[]'s
- Movido C. Augusto Proiete [MVP]Moderator sexta-feira, 2 de outubro de 2009 00:39 Movendo para fórum apropriado (De:ASP .NET)
Respostas
-
Luidy,
você vai chamar de dentro de sua View (já que um UserControl é somente um "pedaço" de página). Mais informações em:
http://blog.wekeroad.com/2007/12/05/aspnet-mvc-preview-using-the-mvc-ui-helpers/
http://blog.wekeroad.com/2008/01/07/aspnet-mvc-using-usercontrols-usefully/
Ricardo Oneda
http://oneda.mvps.org/blog- Marcado como Resposta André Borges MedeirosModerator domingo, 3 de abril de 2011 15:53
Todas as Respostas
-
Luidy,
não sei se entendi muito bem o que você deseja, mas o ViewData é um objeto do tipo coleção nomes/valores. Ou seja, assim como o objeto Session, você pode armazenar qualquer objeto nele e depois recuperar esses objetos fazendo um cast/conversão. Algo assim:
Code SnippetViewData["MeusItens"] = sua lista de items do tipo List<MeuItem>;e para recuperar
Code SnippetList<MeuItem> meusItens = ViewData["MeusItens"] as List<MeuItem>;Faço algo semelhante em:
http://www.linhadecodigo.com.br/Artigo.aspx?id=1634&pag=3
Ricardo Oneda
http://oneda.mvps.org/blog -
Olá Ricardo,
O que eu gostaria mesmo é dentro do meu aspx, chamar o RenderUserControl para renderizar o meu ascx, só que o meu ascx precisa que eu passe um parâmetro do tipo List<MeuItem>. Só que preciso carregar esse parâmetro. Gostaria de saber como chamo uma ação do Controller somente para retornar dados pra mim dentro da minha página aspx só que minha página aspx.cs não pode herdar ViewPage<List<MeuItem>>, até mesmo porque preciso renderizar mais coisas na página. Quero pegar os dados vindos do controller e passar para o ascx.
Entendeu? É mesmo um pouco complicado de enteder e eu não sou muito bom pra explicar.
[]'s
-
Luidy,
então, você não precisa que sua view herde de uma classe. Você pode passar os dados pelo ViewData, como expliquei acima, e depois repassar para seu UserControl.
Ricardo Oneda
http://oneda.mvps.org/blog -
-
Luidy,
você vai chamar de dentro de sua View (já que um UserControl é somente um "pedaço" de página). Mais informações em:
http://blog.wekeroad.com/2007/12/05/aspnet-mvc-preview-using-the-mvc-ui-helpers/
http://blog.wekeroad.com/2008/01/07/aspnet-mvc-using-usercontrols-usefully/
Ricardo Oneda
http://oneda.mvps.org/blog- Marcado como Resposta André Borges MedeirosModerator domingo, 3 de abril de 2011 15:53