Compartilhar via


Criar um controlador (C#)

por Stephen Walther

Neste tutorial, Stephen Walther demonstra como você pode adicionar um controlador a um aplicativo MVC ASP.NET.

O objetivo deste tutorial é explicar como você pode criar novos controladores MVC ASP.NET. Você aprenderá a criar controladores usando a opção de menu Adicionar Controlador do Visual Studio e criando um arquivo de classe manualmente.

Usando a opção de menu Adicionar Controlador

A maneira mais fácil de criar um novo controlador é clicar com o botão direito do mouse na pasta Controladores na janela Gerenciador de Soluções do Visual Studio e selecionar a opção de menu Adicionar, Controlador (consulte a Figura 1). Selecionar essa opção de menu abre a caixa de diálogo Adicionar Controlador (consulte a Figura 2).

Captura de tela da janela Gerenciador de Soluções do Visual Studio, que mostra as opções Adicionar e Controlador no menu de clique com o botão direito do mouse.

Figura 01: Adicionando um novo controlador (Clique para exibir a imagem em tamanho real)

Captura de tela da caixa de diálogo Adicionar Controlador, que mostra o Controlador Padrão 1 no campo Nome do Controlador.

Figura 02: a caixa de diálogo Adicionar Controlador (clique para exibir a imagem em tamanho real)

Observe que a primeira parte do nome do controlador está realçada na caixa de diálogo Adicionar Controlador . Cada nome do controlador deve terminar com o controlador de sufixo. Por exemplo, você pode criar um controlador chamado ProductController , mas não um controlador chamado Product.

Se você criar um controlador sem o sufixo Controller , não será possível invocar o controlador. Não faça isso, gastei inúmeras horas da minha vida depois de cometer este erro.

Listagem 1 – Controllers\ProductController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class ProductController : Controller
    {
        //
        // GET: /Product/

        public ActionResult Index()
        {
            return View();
        }
    }
}

Você sempre deve criar controladores na pasta Controladores. Caso contrário, você estará violando as convenções de ASP.NET MVC e outros desenvolvedores terão mais dificuldade em entender seu aplicativo.

Métodos de ação de scaffolding

Ao criar um controlador, você tem a opção de gerar automaticamente os métodos de ação Criar, Atualizar e Detalhes (consulte a Figura 3). Se você selecionar essa opção, a classe de controlador na Listagem 2 será gerada.

Criando métodos de ação automaticamente

Figura 03: Criando métodos de ação automaticamente (clique para exibir a imagem em tamanho real)

Listagem 2 – Controllers\CustomerController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class CustomerController : Controller
    {
        //
        // GET: /Customer/

        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /Customer/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Customer/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Customer/Create

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Customer/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Customer/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}

Esses métodos gerados são métodos stub. Você deve adicionar a lógica real para criar, atualizar e mostrar detalhes para um cliente por conta própria. Porém, os métodos stub fornecem um bom ponto de partida.

Criando uma classe de controlador

O controlador MVC ASP.NET é apenas uma classe. Se preferir, você pode ignorar o scaffolding conveniente do controlador do Visual Studio e criar uma classe de controlador manualmente. Siga estas etapas:

  1. Clique com o botão direito do mouse na pasta Controladores e selecione a opção de menu Adicionar, Novo Item e selecione o modelo Classe (consulte a Figura 4).
  2. Nomeie a nova classe PersonController.cs e clique no botão Adicionar .
  3. Modifique o arquivo de classe resultante para que a classe herde da classe base System.Web.Mvc.Controller (consulte Listagem 3).

Criando uma nova classe

Figura 04: Criando uma nova classe (Clique para exibir a imagem em tamanho real)

Listagem 3 – Controllers\PersonController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication1.Controllers
{
    public class PersonController : System.Web.Mvc.Controller
    {
        public string Index()
        {
            return "Hello World!";
        }
    }
}

O controlador na Listagem 3 expõe uma ação chamada Index() que retorna a cadeia de caracteres "Olá, Mundo!". Você pode invocar essa ação do controlador executando seu aplicativo e solicitando uma URL como a seguinte:

http://localhost:40071/Person

Observação

O ASP.NET Development Server usa um número de porta aleatório (por exemplo, 40071). Ao inserir uma URL para invocar um controlador, você precisará fornecer o número da porta correto. Você pode determinar o número da porta passando o mouse sobre o ícone do servidor de desenvolvimento do ASP.NET na Área de Notificação do Windows (no canto inferior direito da tela).