Neste artigo eu vou mostrar como criar uma aplicação ASP .NET Core MVC usando o VS 2017. |
Continuando a segunda parte do artigo vou mostrar como podemos passar dados do controlador para as views.
Nota: Se você não conheçe o Razor e sua sintaxe sugiro que leia este artigo : ASP .NET - Apresentando a sintaxe Razor - Macoratti
Passando dados do Controller para a View
Um Controller ou controlador é responsável por controlar a maneira como um usuário interage com uma aplicação MVC e possui o fluxo de controle lógico para uma aplicação ASP .NET MVC.
É o controlador que determina que resposta será enviada de volta ao usuário quando ele faz uma requisição via navegador. Um controlador é uma classe que contém métodos de ação ou Action.
As
Actions (ações) do controlador são chamadas em resposta a uma solicitação de URL
de entrada. Uma classe de controlador é onde você escreve o código que manipula
as solicitações do navegador de entrada. O controlador recupera dados de uma
fonte de dados e decide que tipo de resposta enviar para o navegador. Os
templates views (modelos de visualização) podem ser usados a partir de um
controlador para gerar e formatar uma resposta HTML para o navegador.
Os controladores são responsáveis por fornecer os dados necessários para que
uma view produza uma resposta.
Recomenda-se que as views não devem executar lógica de negócios ou interagir diretamente com um banco de dados. Em vez disso, uma view deve funcionar apenas com os dados fornecidos a ela pelo controlador. Manter esta "separação de responsabilidades" ajuda a manter o seu código limpo, testável e sustentável.
As ações
do controlador são chamadas em resposta a uma solicitação de URL de entrada. Uma
classe de controlador é onde você escreve o código que manipula as solicitações
do navegador de entrada. O controlador recupera dados de uma fonte de dados e
decide que tipo de resposta enviar para o navegador. Os templates views (modelos
de visualização) podem ser usados a partir de um controlador para gerar e
formatar uma resposta HTML para o navegador.
Os controladores são responsáveis por fornecer os dados necessários para que
uma view produza uma resposta. Uma prática recomendada: As views não devem
executar lógica de negócios ou interagir diretamente com um banco de dados. Em
vez disso, uma view deve funcionar apenas com os dados fornecidos a ela pelo
controlador. Manter esta "separação de responsabilidades" ajuda a manter
o seu código limpo, testável e sustentável.
Atualmente, o método BemVindo na classe OlaMundoController toma um nome e
um parâmetro ID e, em seguida, exibe diretamente os valores de saída para o
navegador.
Em vez do controlador processar essa resposta como uma seqüência de caracteres,
vamos alterar o controlador para usar uma view para fazer isso como recomendado.
A view irá gerar uma resposta dinâmica, o que significa que você precisa passar
os bits de dados apropriados do controlador para a view, a fim de gerar a
resposta.
Você pode fazer isso fazendo com que o controlador coloque os dados dinâmicos (parâmetros)
que a view precisa em um dicionário ViewData que a view pode acessar.
Abra o arquivo OlaMundoController.cs e altere o método BemVindo
para adicionar um valor Mensagem e NumVezes ao dicionário
ViewData.
O dicionário ViewData é um objeto dinâmico, o que significa que você pode colocar o que quiser dentro dele; O objeto ViewData não tem propriedades definidas até que você coloque algo dentro dele. O sistema de vinculação do modelo MVC mapeia automaticamente os parâmetros nomeados (nome e numVezes) da string de consulta na barra de endereços para os parâmetros no seu método.
Nota: Para saber mais sobre ViewData leia o artigo: ASP .NET MVC - ViewBag, ViewData e TempData - Macoratti
Abaixo temos o código do arquivo OlaMundoController.cs alterado:
using Microsoft.AspNetCore.Mvc;
namespace MvcFilme.Controllers
{
public class OlaMundoController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult BemVindo(string nome, int NumVezes)
{
ViewData["Mensagem"] = "Olá " + nome;
ViewData["NumVezes"] = NumVezes;
return View();
}
}
}
|
Agora nosso controlador possui objetos dictionary ViewData que contém dados que serão passados para a view. Qual view ?
Bem, ainda não criamos a view. Mas sabemos que temos que criar uma view na pasta Views/OlaMundo com o nome BemVindo.cshtml porque esta é a convenção padrão que o Framework MVC adota :
De forma geral, se você deseja retornar uma view para uma ação do controlador, então você vai precisar criar uma subpasta na pasta Views com o mesmo nome do controlador, e, no interior da subpasta você deverá criar uma View com o mesmo nome da ação do controlador.
Clique com o botão direito do mouse sobre a pasta Views/OlaMundo e a seguir em Add-> New Item;
Selecione o template MVC View Page, informe o nome BemVindo.cshtml e clique no botão Add;
A seguir inclua o código abaixo neste arquivo:
@{
ViewData["Title"] = "Bem-Vindo";
}
<h2>Macoratti .net - Seja Bem-Vindo</h2>
<ul>
@for (int i = 0; i < (int)ViewData["NumVezes"]; i++)
{
<li>@ViewData["Mensagem"]</li>
}
</ul>
|
Neste código estamos utilizando os dados, que serão passados via URL via objeto ViewData, do controlador para a View e usando um laço for iremos exibir a mensagem no número de vezes informado.
Salve as alterações e altere a URL do navegador para : http://localhost:XXXXX/Olamundo/BemVindo?nome=Macoratti&numvezes=5 e veja o resultado :
Os dados são extraídos da URL e passados para o controlador usando o MVC model binder. O controlador então empacota os dados em um dicionário ViewData e passa esse objeto para a view. A view então processa os dados como HTML para o navegador. Foi o que aconteceu no exemplo acima: Exibimos a mensagem 'Olá Macoratti' cinco vezes.
Nota:
O Model Binding funciona assim : Quando MVC recebe uma
solicitação HTTP, ele roteia a requisição para um método de Action
específico de um controlador. Ele determina qual método Action deve ser
executado com base no que está nos dados da rota, e então vincula
valores da solicitação HTTP aos parâmetros desse método Action.
Considere
a seguinte URL: Http://macoratti.com/filmes/edit/2 |
No exemplo acima, usamos o dicionário ViewData para passar dados do controlador para uma view. Mais adiante usaremos uma view model ou modelo de visão para passar dados de um controlador para uma view. A abordagem em usar a view model para passar dados é, em muitos casos, mais indicada em relação à abordagem do dicionário ViewData.
Na próxima parte do artigo vamos tratar dos dados da aplicação criando um banco de dados chamado Filmes.
(Disse Jesus) Na
verdade, na verdade vos digo que quem ouve a minha palavra, e crê naquele que me
enviou, tem a vida eterna, e não entrará em condenação, mas passou da morte para
a vida.
João 5:24
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: