O que são controllers e sua importância nos projetos ASP.NET MVC;
O que são actions e sua relação com os controllers;
Entender o comportamento ideal dos controllers em aplicações bem construí-
das;
Modo de ativação e chamada de controllers;
Criar views a partir de actions presentes nos controllers;
Actions que podem não dar origem a views mas que são muito importantes.
Compreender o funcionamento dos controllers e suas actions é de fundamental
importância para a construção de aplicações utilizando ASP.NET MVC. Definimos
no capítulo anterior os models (modelos) da nossa aplicação, chegou o momento de adicionarmos um pouco de vida a ela.
Vamos começar?!
5.1
Vamos controlar a aplicação?
Um orquestrador de operações diversas. Esta é uma boa definição para os controllers dentro da framework ASP.NET MVC, já que são eles que agrupam todos os comportamentos da aplicação.
Como você deve se lembrar, no capítulo 2 falamos um pouco sobre o modelo de
rotas implementado pelo ASP.NET MVC. Naquela ocasião, mencionamos o fato de
que, ao receber determinada requisição, o MVC procuraria o controller que respon-deria para ela, determinaria qual action a processaria e então, geraria a visualização para o cliente.
78
Casa do Código
Capítulo 5. Controllers: Adicionando comportamento a nossa aplicação
Em termos técnicos, um controller nada mais é do que uma classe que herda
comportamentos de outra (a saber, Controller) disponível na BCL. Cada método disponível nesta classe especial é chamado de Action. As Actions são, efetivamente, a menor unidade de ação dentro de um controller. São elas que encapsulam os comportamentos que são invocados a todo momento, pela classe controladora.
5.2
Entendendo o papel dos Controllers e Actions
Fazendo uma analogia simples, podemos dizer que os controllers serão os mediadores das conversas entre as visões da aplicação (views) e os modelos (models).
Os controllers serão responsáveis por receber e transformar as requisições en-
viadas pelas views em informações que serão utilizadas pelas regras de negócio da aplicação, ou seja, os models. O contrário também é verdadeiro, os controllers têm a responsabilidade de selecionar a view correta para apresentação de informações ao usuário.
Ao receber uma requisição, os controllers devem efetuar alguma ação para que
a requisição seja processada, essas ações são as actions. As actions são métodos definidos no controller, e o controller pode ter várias actions.
Para exemplificar a utilização dos controllers e actions, criaremos em nossa so-lução de exemplo (Cadê meu médico), um controller fictício com algumas actions.
Mas antes de iniciarmos, é altamente recomendável que você entenda em sua plenitude o conceito de roteamento (já apresentado no capítulo 2).
Lá você pôde entender que o roteamento padrão do MVC é definido por
{controller}/{action}/{id}. Em nosso exemplo, queremos que as seguin-
tes URLs estejam respondendo na aplicação:
http://localhost/mensagens/bomdia
http://localhost/mensagens/boatarde
O processo de criação de novos controladores é simples, basta que você repita
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.
Uma nova janela onde podemos
definir alguns parâmetros e propriedades do
novo controller se mostrará. Você deverá fornecer como entrada para o campo Controller Name o valor MensagensController e, para o grupo Scaffold options no
79
5.2. Entendendo o papel dos Controllers e Actions
Casa do Código
campo Template, a opção Empty MVC controller. Ao final. a janela com os valores configurados deve estar parecida com a apresentada pela figura 5.1.
Figura 5.1: Criando o Controller Mensagens
Após isso, você notará que o Visual Studio abrirá o arquivo recém-criado e
que no interior de nosso controller MensagensController uma action chamada
index já estará criada. Assim, seu controller deverá estar parecido com o apresentado pela listagem 1.
Listagem 5.1 - Código padrão do MensagensController:
public class MensagensController : Controller
{
//
// GET: /Mensagens/
public ActionResult Index()
{
return View();
}
80
Casa do Código
Capítulo 5. Controllers: Adicionando comportamento a nossa aplicação
}
O que faremos agora é excluir a action index predefinida e criar novas duas
novas, chamadas BomDia e BoaTarde respectivamente. Os códigos que compõem
tais actions deverão apresentar alguma informação para o usuário. Estas serão as funções de ambas.
Não se preocupe, o tipo de retorno ActionResult e a diretiva de retorno
Content que utilizaremos em nossos exemplos serão discutidas em maiores deta-
lhes à medida que avançamos neste capítulo.
A listagem 2 apresenta o código das actions que executarão as tarefas que
o usuário final solicitará e que você deverá adicionar ao seu controller para a visualização do exemplo.
Listagem 5.2 - Actions que retornam mensagens para o usuário: