os passos já informados anteriormente, isto é, clique com o botão direito do mouse no diretório Controllers (na Solution Explorer) e na sequência, no menu que será apresentado, escolha as opções Add > Controller.
Na janela de criação do controller, nomeie-o como MedicosController. Não
se esqueça da CoC associada aos controllers em relação aos seus nomes. Estes nomes devem possuir o sufixo Controller. Seguindo com a parametrização, na opção Template, selecione o valor Empty MVC controller. A janela completamente parametrizada deve se parecer com a figura 5.3.
Apesar do ASP.NET MVC possuir um mecanismo de Scaffolding poderoso que
cria automaticamente controllers/actions/views, construiremos manualmente todo o controller e demais recursos necessários. Isso fará com que o entendimento de todo o fluxo de criação e funcionamento do MVC, seja facilitado.
84
Casa do Código
Capítulo 5. Controllers: Adicionando comportamento a nossa aplicação
Figura 5.3: Criação do MedicosController
É importante notar o fato de que, muito embora estejamos utilizando o template Empty MVC controller para este primeiro controller de exemplo, ao ser criado, o MedicosController já traz em seu interior uma action padrão chamada Index.
O código padrão do controller deve estar parecido com o da listagem 3.
Listagem 5.3 - Código padrão criado pelo Visual Studio:
public class MedicosController
: Controller
{
//
// GET: /Medicos/
public ActionResult Index()
{
return View();
}
}
Quando o administrador do aplicativo navegar até a URL /Medicos/, será
possível visualizar a lista de todos os médicos já cadastrados. Os modelos da nossa 85
5.4. Cadê meu médico: CRUDs
Casa do Código
aplicação foram criados utilizando Entity Framework e é através dele que obteremos a lista de médicos já cadastrados para que, em um momento posterior, possamos
enviá-los para a view.
Evoluir é preciso, assim, continuando a construção do MedicosController,
precisamos agora criar uma instância do objeto EntidadesCadeMeuMedicoBD
que possibilitará todo o trabalho de comunicação dos nossos modelos (mo-
dels) com o banco de dados da aplicação. Lembre-se de adicionar o namespace
CadeMeuMedico.Models nos usings do controller MedicosController. Com a
instância do contexto de entidades do Entity Framework criada, podemos na action Index obter uma lista com todos os Médicos cadastrados e, no instante seguinte, passar estes dados para a view. A listagem 4 representa isso.
Listagem 5.4 - Action Index retornando a lista de médicos cadastrados:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CadeMeuMedico.Models;
namespace CadeMeuMedico.Controllers
{
public class MedicosController : Controller
{
private EntidadesCadeMeuMedicoBD db =
new EntidadesCadeMeuMedicoBD();
public ActionResult Index()
{
var medicos = db.Medicos.Include(m => m.Cidade)
.Include(m => m.Especialidade).ToList();
return View(medicos);
}
}
}
O código apresentado pela listagem 4 é simples. O aspecto a ser ressaltado aqui é o retorno da action Index. Como você pode perceber, estamos retornando uma
lista ( .ToList()) de todos os médicos ( .Medicos) disponíveis no contexto (db).
86
Casa do Código
Capítulo 5. Controllers: Adicionando comportamento a nossa aplicação
Outro detalhe interessante na listagem 4 é a utilização dos métodos
.Include(). A utilizar o método .Include, informamos ao Entity Framework
que além do modelo (tabela) que estamos carregando, queremos obter seus relacionamentos, ou seja, nesse caso estamos listando os médicos e obtendo sua respectiva
Especialidade e Cidade.
Agora que já possuímos a action Index criada e funcionando, podemos adici-
onar a view que responderá visualmente à solicitação de Index no navegador
aquela que mostrará a lista de médicos cadastrados para o usuário final. Para realizar tal operação, faremos uma vez mais o uso do scaffolding da framework ASP.NET
MVC.
Clique com o botão direito do mouse sobre o método View dentro da action
Index, no menu de contexto que será exibido selecione a opção Add View..., a figura 5.4 demonstra esse processo.
Figura 5.4: Adicionando uma nova View
Na janela que será apresentada, configuraremos os detalhes referentes a nova
view. Configure a view da seguinte forma:
View name: automaticamente o MVC vai sugerir o mesmo nome da action,
nesse caso Index;
Create a strongly-typed view: marque essa opção pois, através dela, criaremos uma view fortemente tipada, fato que facilitará nosso trabalho, permitindo a
utilização direta do model na view;
Model class: selecione o model que servirá de base para a criação da view. Nesse caso, sua opção deve ser por Medico";
Scaffold template: define qual template de view será criado. Neste caso, selecione a opção List. Como consequência, o MVC criará automaticamente uma
view com uma tabela pronta para demonstrar os registros existentes;
Reference script libraries: desmarque essa opção. Toda referência de script necessária para o funcionamento do aplicativo foi realizada na Master Page;