Partilhar via


Adicionando um controlador – apresenta as noções básicas de ASP.NET MVC

por Scott Hanselman

Observação

Uma versão atualizada se este tutorial estiver disponível aqui usando Visual Studio 2013. O novo tutorial usa ASP.NET MVC 5, que fornece muitas melhorias ao longo deste tutorial.

Este é um tutorial iniciante que apresenta os conceitos básicos de ASP.NET MVC. Você criará um aplicativo Web simples que lê e grava de um banco de dados. Visite o centro de aprendizagem do ASP.NET MVC para encontrar outros tutoriais e exemplos do MVC ASP.NET.

MVC significa Modelo, Exibição, Controlador. O MVC é um padrão para desenvolver aplicativos de modo que cada parte tenha uma responsabilidade diferente de outra.

  • Modelo: os dados do seu aplicativo
  • Exibições: os arquivos de modelo que seu aplicativo usará para gerar dinamicamente respostas HTML.
  • Controladores: classes que lidam com solicitações de URL de entrada para o aplicativo, recuperam dados de modelo e especificam modelos de exibição que renderizam uma resposta de volta ao cliente

Abordaremos todos esses conceitos neste tutorial e mostraremos como usá-los para criar um aplicativo.

Vamos criar um novo controlador clicando com o botão direito do mouse na pasta controladores na solução Explorer e selecionando Adicionar Controlador.

AddControllerRightClick

Nomeie seu novo controlador como "HelloWorldController" e clique em Adicionar.

Caixa de diálogo Adicionar Controlador

Observe no Gerenciador de Soluções à direita que um novo arquivo foi criado para você chamado HelloWorldController.cs e que o arquivo agora está aberto no IDE.

HelloWorldControllerCode

Crie dois novos métodos semelhantes a este dentro da nova classe pública HelloWorldController. Retornaremos uma cadeia de caracteres de HTML diretamente do nosso controlador como exemplo.

using System.Web.Mvc;
 
namespace Movies.Controllers
{
    public class HelloWorldController : Controller
    {
        public string Index()
        {
            return "This is my default action...";      
        }
        
        public string Welcome()
        {  
            return "This is the Welcome action method...";
        }  
    }
}

Seu controlador se chama HelloWorldController e seu novo método é chamado index. Execute seu aplicativo novamente, assim como antes (clique no botão Reproduzir ou pressione F5 para fazer isso). Depois que o navegador for iniciado, altere o caminho na barra de endereços para http://localhost:xx/HelloWorld onde xx é o número escolhido pelo computador. Agora, seu navegador deve ter a aparência da captura de tela abaixo. Em nosso método acima, retornamos uma cadeia de caracteres passada para um método chamado "Content". Dissemos que o sistema retorna apenas alguns HTML, e ele fez!

ASP.NET MVC invoca diferentes classes de controlador (e diferentes métodos de ação dentro delas), dependendo da URL de entrada. A lógica de mapeamento padrão usada pelo ASP.NET MVC usa um formato como este para controlar qual código é executado:

/[Controller]/[ActionName]/[Parameters]

A primeira parte da URL determina a classe Controller a ser executada. Assim /HelloWorld mapeia para a classe HelloWorldController. A segunda parte da URL determina o método Action na classe a ser executada. Assim, /HelloWorld/Index faria com que o método Index() da classe HelloWorldController fosse executado. Observe que só tínhamos que visitar /HelloWorld acima e o método Index estava implícito. Isso ocorre porque um método chamado "Index" é o método padrão que será chamado em um controlador se um não for especificado explicitamente.

Esta é a minha ação padrão

Agora, vamos visitar http://localhost:xx/HelloWorld/Welcome. Agora nosso Método Welcome executou e retornou sua cadeia de caracteres HTML.

Novamente, /[Controller]/[ActionName]/[Parameters] portanto, Controller é HelloWorld e Welcome é o Método neste caso. Ainda não fizemos Parâmetros.

Este é o método de ação De boas-vindas

Vamos modificar nosso exemplo ligeiramente para que possamos passar algumas informações da URL para nosso controlador, por exemplo: /HelloWorld/Welcome?name=Scott&numtimes=4. Altere seu método Welcome para incluir dois parâmetros e atualizá-lo como abaixo. Observe que usamos o recurso de parâmetro opcional C# para indicar que o parâmetro numTimes deve ser padronizado como 1 se ele não for passado.

public string Welcome(string name, int numTimes = 1)
{
   string message = "Hello " + name + ", NumTimes is: " + numTimes;
   return "" + Server.HtmlEncode(message) + "";
}

Execute seu aplicativo e visite http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4 alterando o valor de nome e numtimes como desejar. O sistema mapeou automaticamente os parâmetros nomeados da cadeia de caracteres de consulta na barra de endereços para os parâmetros em seu método.

Nesses dois exemplos, o controlador tem feito todo o trabalho e retornado HTML diretamente. Normalmente, não queremos que nossos Controladores retornem HTML diretamente , pois isso acaba sendo muito complicado para codificar. Em vez disso, normalmente usaremos um arquivo de modelo de exibição separado para ajudar a gerar a resposta HTML. Vamos ver como podemos fazer isso. Feche o navegador e retorne ao IDE.