ASP.NET MVC e passagem de parametros entre views

2,129 views
Skip to first unread message

Fabio Silva

unread,
Mar 2, 2010, 9:41:58 PM3/2/10
to dotn...@googlegroups.com
Fala galera!

To com um probleminha chato aqui. Tenho o seguinte cenário:

View Home: contém uma listagem de dados.
View Detalhes: contem detalhes de um dado selecionado na view acima. A URL dela é algo assim: Detalhes/Index/123, onde 123 é o id do dado selecionado na view Home.
Contém tb um form e um botão que faz um post dos dados do form.

Pergunta: como passar esse "123" no post também?

Outra dúvida: na mesma view (Detalhes), tem um link (q aponta pra ela mesma) definido da seguinte forma: 
<%= Html.ActionLink("Detalhes", "Index", "Detalhes")%>

A página "Detalhes" deve abrir sem eu selecionar nada na listagem, ou seja, sem passar pela Home. Ao abrir ela, a URL fica da seguinte forma: Detalhes/Index. Porém, ao selecionar algo na Home e depois ver a URL que  o ActionLink citado acima gerou, o conteúdo fica da seguinte forma: Detalhes/Index/123. Alguém sabe o pq disso?

Espero ter sido claro.

Agradeço desde já!

--
Fabio Rogério da Silva

Juan Pedro A. Lopes

unread,
Mar 2, 2010, 9:53:49 PM3/2/10
to dotn...@googlegroups.com
Céus. Que confusão você está fazendo. Por que você tem um controller somente para exibir os detalhes?

Acredito que o que você queria fazer era exibir dados de, digamos, um cliente. Para isso, você deveria criar um controller Cliente (ClienteController) e nele as actions para exibir seus dados.

Na action Index, algo como:
public ActionResult Index() 
{
    return View(Cliente.ListAll());
}

E na view:
<% foreach(var cliente in Model) { %>
    <tr><td><%=Html.ActionLink("Editar", "Edit", new { id = cliente.Id }) %></td> ...
<% } %>

Já na action Details, dois métodos:
public ActionResult Edit(int id)
{
   return View(Cliente.Load(id));
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Cliente c) 
{
    try 
    {
        c.Update();
    } //...
}

Tipo, tudo feito de cabeça agora, mas é mais ou menos isso. Um exemplo de um Controller bem simples meu; http://pastebin.com/eRRK2TH0

2010/3/2 Fabio Silva <fabio...@gmail.com>
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
".Net Br" no Google Groups: http://groups.google.com.br/group/dotnet_br/
E-mail do Grupo: dotn...@googlegroups.com
"Your Potential. Our Passion."
 
==============================
Comunidade de desenvolvedores PHP
"LISTA PHP" no Google Groups: http://groups.google.com.br/group/listaphp
E-mail do Grupo: list...@googlegroups.com

Fabio Silva

unread,
Mar 2, 2010, 9:58:07 PM3/2/10
to dotn...@googlegroups.com
O nome foi infeliz, mas eu preciso ter um controller separado para o que eu estou querendo fazer. Ele deve funcionar independente da Home. Sacou?

2010/3/2 Juan Pedro A. Lopes <zero...@gmail.com>

Ricardo Rocha

unread,
Mar 3, 2010, 5:45:16 AM3/3/10
to dotn...@googlegroups.com
Apesar de estar um pouco confuso, deixe-me tentar ajudar ...

Aparentemente, tua view Home é de fato um aspx .... porém a Detalhes tem tudo para ser um ascx.

Como vejo o funcionamento:
Vc seleciona um registro na Home e os detalhes devem ser exibidos. Para isso vc passa o código do registro para o ascx. Vc pode recarregar as informações via ajax (jquery) a cada mudança de registro ou recarregar a página, chamando algo tipo Home/123 ... e interpetrar na view que o 123 é o código do produto que deve exibir os detalhes (e então passar isso para o ascx).

O importante é que no teu ascx vc deve verificar se recebeu algum código de entrada. Se receber,  carregue os dados do registro, caso não receba, carregue o que deve ser exibido quando não tiver um registro selecionado.

Acho que a idéia é essa ... só tem que adaptar ao teu problema real !!


[]'s

Ricardo José Alves da Rocha
Porto Alegre - RS
Reply all
Reply to author
Forward
0 new messages