Adicionar um controlador (C#)

por Rick Anderson

Note

Uma versão atualizada deste tutorial está disponível aqui que usa o ASP.NET MVC 5 e o Visual Studio 2013. É mais seguro, muito mais simples de seguir e demonstra mais recursos.

Este tutorial ensinará as noções básicas da criação de um aplicativo Web ASP.NET MVC usando o Microsoft Visual Web Developer 2010 Express Service Pack 1, que é uma versão gratuita do Microsoft Visual Studio. Antes de começar, verifique se você instalou os pré-requisitos listados abaixo. Você pode instalar todos eles clicando no seguinte link: Web Platform Installer. Como alternativa, você pode instalar os pré-requisitos individualmente usando os seguintes links:

Se você estiver usando o Visual Studio 2010 em vez do Visual Web Developer 2010, instale os pré-requisitos clicando no seguinte link: pré-requisitos do Visual Studio 2010.

Um projeto do Visual Web Developer com C# código-fonte está disponível para acompanhar este tópico. Baixe a C# versão. Se preferir Visual Basic, alterne para a versão Visual Basic deste tutorial.

O MVC significa Model-View-Controller. O MVC é um padrão para o desenvolvimento de aplicativos que são bem arquitetados e fáceis de manter. Os aplicativos baseados em MVC contêm:

  • Controladores: classes que tratam solicitações de entrada para o aplicativo, recuperam dados de modelo e, em seguida, especificam modelos de exibição que retornam uma resposta ao cliente.
  • Modelos: classes que representam os dados do aplicativo e que usam a lógica de validação para impor regras de negócio para esses dados.
  • Exibições: Arquivos de modelo que seu aplicativo usa para gerar dinamicamente respostas HTML.

Abordaremos todos esses conceitos nesta série de tutoriais e mostraremos como usá-los para criar um aplicativo.

Vamos começar criando uma classe de controlador. Em Gerenciador de soluções, clique com o botão direito do mouse na pasta controladores e selecione Adicionar controlador.

Nomeie o novo controlador "HelloWorldController". Deixe o modelo padrão como controlador vazio e clique em Adicionar.

AddHelloWorldController

Observe no Gerenciador de soluções que um novo arquivo foi criado chamado HelloWorldController.cs. O arquivo está aberto no IDE.

Dentro do bloco de public class HelloWorldController, crie dois métodos que se parecem com o código a seguir. O controlador retornará uma cadeia de caracteres de HTML como um exemplo.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

Seu controlador é nomeado HelloWorldController e o primeiro método acima é nomeado Index. Vamos chamá-lo de um navegador. Execute o aplicativo (pressione F5 ou CTRL + F5). No navegador, acrescente "HelloWorld" ao caminho na barra de endereços. (Por exemplo, na ilustração abaixo, é http://localhost:43246/HelloWorld.) A página no navegador se parecerá com a captura de tela a seguir. No método acima, o código retornou uma cadeia de caracteres diretamente. Você disse ao sistema para retornar apenas um HTML e ele fazia!

O ASP.NET MVC invoca classes de controlador diferentes (e métodos de ação diferentes 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 determinar qual código invocar:

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

A primeira parte da URL determina a classe do controlador a ser executada. Portanto, /HelloWorld é mapeado para a classe HelloWorldController. A segunda parte da URL determina o método de ação na classe a ser executada. Portanto, /HelloWorld/index faria com que o método de Index da classe HelloWorldController fosse executado. Observe que precisamos apenas navegar até /HelloWorld e o método Index foi usado por padrão. 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.

Navegue até http://localhost:xxxx/HelloWorld/Welcome. O método Welcome é executado e retorna a cadeia de caracteres “Este é o método de ação Boas-vindas...”. O mapeamento do MVC padrão é /[Controller]/[ActionName]/[Parameters]. Para essa URL, o controlador é HelloWorld e Welcome é o método de ação. Você ainda não usou a parte [Parameters] da URL.

Vamos modificar o exemplo ligeiramente para que você possa passar algumas informações de parâmetro da URL para o controlador (por exemplo, /HelloWorld/Welcome? Name = Scott&numtimes = 4). Altere o método Welcome para incluir dois parâmetros, conforme mostrado abaixo. Observe que o código usa o C# recurso opcional-Parameter para indicar que o parâmetro numTimes deve usar como padrão 1 se nenhum valor for passado para esse parâmetro.

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

Execute o aplicativo e navegue até a URL de exemplo (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). Você pode tentar valores diferentes para name e numtimes na URL. O sistema mapeia automaticamente os parâmetros nomeados da cadeia de caracteres de consulta na barra de endereços para parâmetros em seu método.

Em ambos os exemplos, o controlador está fazendo a parte "VC" do MVC, ou seja, o modo de exibição e o controlador funcionam. O controlador retorna o HTML diretamente. Normalmente, você não quer que os controladores retornem HTML diretamente, já que isso se torna muito complicado para o código. Em vez disso, normalmente usaremos um arquivo de modelo de exibição separado para ajudar a gerar a resposta HTML. Vejamos em seguida como podemos fazer isso.