public class MensagensController : Controller
{
public ActionResult BomDia()
{
return Content("Bom dia... hoje você acordou cedo!");
}
public ActionResult BoaTarde()
{
return Content("Boa tarde... não durma na mesa do trabalho!");
}
}
Pronto. Nosso projeto já pode ser executado. Compile-o utilizando a tecla F5.
Seu navegador padrão será trazido à execução e irá apresentar uma mensagem de
erro dizendo que Não foi possível encontrar o recurso. Muito embora a mensagem de erro seja emitida, ela já era esperada. Isso acontece porque ainda não criamos o controller padrão configurado no roteamento do nosso projeto.
Neste momento, para que você possa visualizar o exemplo em execução, descon-
sidere a mensagem de erro e, na barra de endereço de seu navegador, complete a URL
apresentada com os valores /mensagens/bomdia ou /mensagens/boatarde.
Perceba que estamos solicitando especificamente um /{controller}/{action}
e, com isso, o MVC faz o roteamento para o controller e action que solicitamos e que podem ser aplicados.
81
5.2. Entendendo o papel dos Controllers e Actions
Casa do Código
Veja através da figura 5.2 um exemplo de uma mensagem sendo exibida ao usuá-
rio.
Figura 5.2: Usuário visualizando a mensagem definida na action
Como você pôde perceber, quando digitamos a URL
http://localhost:1063/
mensagens/boatarde , obtivemos a resposta Boa tarde... não vá dormir na mesa do trabalho. Isso ocorreu porque, ao receber a requisição, o controller mensagens di-recionou o fluxo de processamento para a action solicitada, isto é, boatarde. Por sua vez, a action boatarde executou a operação que lhe era devida e enviou um
retorno de conteúdo (note a utilização da diretiva Content), neste caso, uma string simples.
82
Casa do Código
Capítulo 5. Controllers: Adicionando comportamento a nossa aplicação
ActionResult e ContentResult, quais as diferenças?
ActionResult é o tipo de retorno mais genérico existente dentro do
framework ASP.NET MVC. Ele suporta qualquer tipo de resultado que
possa ser retornado, sendo os mais comuns: JsonResult, ContentResult, EmptyResult, FileResult, JavaScriptResult, RedirectResult. Cada um dos mencionados nada mais é do que a extensão (através de herança)
de ActionResult. Sua implementação é extremamente simples, contendo
apenas
um método para ser implementado na classe que a herda, haja
vista que ActionResult é uma classe abstrata.
Desta forma, ContentResult trata-se de uma implementação exten-
siva da classe ActionResult, que permite formatar qualquer tipo de con-
teúdo que se deseja retornar, especificando inclusive, seu ContentType.
Textos simples (como nosso exemplo) até sentenças mais complexas
(como nodos de XML, por exemplo) podem ser retornados através de
Content.
Agora que você já foi apresentado aos conceitos iniciais relacionados aos controllers, é chegado o momento de voltar as atenções para nossa aplicação de exemplo.
Isso será feito na próxima seção.
5.3
Cadê meu médico: o que faremos?
A partir daqui, apresentaremos algumas formas práticas para o trabalho com controllers, utilizando exemplos reais (todos no contexto da aplicação Cadê meu médico).
Apresentaremos os diferentes modelos de interação entre views e controllers e, ao final, você terá presenciado algumas das diversas formas de trabalho com controllers.
Como já mencionamos, existem diferentes formas para realizar a interação entre controllers e views em aplicações ASP.NET MVC. Neste capítulo, apresentaremos as principais (comumente utilizadas em projetos reais). Assim, para que você possa estruturar de forma ainda melhor seus estudos, listamos a seguir os principais aspectos relacionados aos controllers que veremos aqui. São eles:
Como passar dados de um controller para uma view;
Como passar dados de uma view para um controller;
83
5.4. Cadê meu médico: CRUDs
Casa do Código
Passando dados de um formulário para controller;
Comunicação de controllers com arquivos de repositórios;
CRUDs utilizando o Scaffold do ASP.NET MVC.
Para que todas essas ações possam ser implementadas, criaremos CRUDs para
cada um dos elementos da aplicação Cadê meu médico (você se lembra: Usuários, Médicos, Especialidades e Cidades).
5.4
Cadê meu médico: CRUDs
Iniciaremos o desenvolvimento do backend da aplicação Cadê meu médico criando
o CRUD essencial para o funcionamento da aplicação, isto é, o cadastro de Médicos.
Faremos desta forma porque é essencial compreendermos, neste momento, o fluxo
de trabalho básico utilizando o ASP.NET MVC.
Através do cadastro de Médicos será possível entender o modelo através do qual enviamos e recebemos informações dos formulários HTML, além de criar toda a ló-
gica básica nas actions do nosso controller para que o cadastro funcione de forma adequada. Muito embora tenhamos um capítulo inteiro dedicado ao estudo das views, já no cadastro de Médicos faremos algumas modificações nas views geradas automaticamente pela framework MVC.
Hora de começar a construção do cadastro de Médicos. Basta que você repita