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).
Figura 01: Adicionando um novo controlador (Clique para exibir a imagem em tamanho real)
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.
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:
- 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).
- Nomeie a nova classe PersonController.cs e clique no botão Adicionar .
- Modifique o arquivo de classe resultante para que a classe herde da classe base System.Web.Mvc.Controller (consulte Listagem 3).
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).