Wagner Andrade

A Vida, Programação, o Universo e Tudo Mais

MVC Lite

O ASP.NET MVC vem se tornando uma alternativa tão popular quanto o Web Forms, isso já é uma tendência vista no mercado. Pessoalmente, gosto bastante da abordagem MVC, é organizada e produtiva de forma equilibrada.

Inspirada no Rails, a versão MVC do ASP.NET conseguiu trazer as melhores práticas para a boca do povo que, acostumados com o Web Forms, não davam muita bola pra HTTP, HTML, Javascript e Web Standards. Acho que apenas isso já representa uma grande vitória, que causa reflexos inclusive no Web Forms.

Sem contar que o Razor é fantástico!

A estrutura de um novo projeto utilizando MVC 4 traz diversos recursos interessantes, como o Modernizr (essencial em tempos de adaptação ao HTML5), jQuery, jQuery UI, jQuery Validation, Knockout, Entity Framework, entre outros!

Mas peraí, entre outros!? Não tem muita coisa aí? Em projetos de nível médio e grande, provavelmente a maioria desses componentes serão utilizados. Quando não utilizados, não fazem diferença, não atrapalham na execução da aplicação.

Mesmo assim, ao criar um novo projeto MVC (Empty!?) nessa versão (que ainda é beta) são gerados 294 arquivos e pastas na solução, somando quase 20 MB. E, pra dizer a verdade, isso me incomoda (bastante) quando quero criar uma aplicação mais simples. Gosto de manter a casa limpa.

Fiz um desafio a mim mesmo: fazer o MVC funcionar com o menor número de recursos possível. E foi bem legal, gerou uma solução muito limpa. Vamos aos passos.

Antes de tudo é bom lembrar que é necessário ter o ASP.NET MVC instalado, estou usando a versão 4 BETA.

Controllers

  • Crie uma nova Solution do tipo Empty Web Application.
  • Adicione a referência ao Assembly System.Web.Mvc.
  • Clique com o botão direito na referência adicionada, clique em Properties, altere Copy Local para True.
  • Adicione o Global Application Class (Global.asax) na aplicação.
  • No Global.asax, adicione os using System.Web.Mvc e System.Web.Routing.
  • Ainda no Global, no método Application_Start, adicione a rota padrão do MVC:
RouteTable.Routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
  • Adicione um diretório chamado Controllers no projeto.
  • Dentro desse diretório, crie um novo controller chamado Home, que nada mais é do que uma classe de nome HomeController, que herda Controller (namespace System.Web.Mvc).
  • Nesse controller, adicione a action Index. HomeController ficará assim:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return Content("<h1>Hello, MVC Lite</h1>");
        }
    }
}
  • Run MVC, run!

Razor Views

  • Adicione as referências System.Web.WebPages e System.Web.WebPages.Razor, com Copy Local True, assim como na etapa anterior.
  • No projeto, crie um diretório chamado Views.
  • Coloque esse Web.Config, com as configurações do Razor, dentro do novo diretório Views.
  • Crie um diretório Home, dentro do diretório das views, onde ficarão as referentes ao HomeController.
  • Crie a view Index.cshtml, dentro do diretório Home, com o seguinte conteúdo:
@model string
<!DOCTYPE html>
<html>
    <head>
        <title>ASP.NET MVC Lite</title>
    </head>
    <body>
        <h1>ASP.NET MVC Lite</h1>
        <h3>@Model</h3>
    </body>
</html>
  • Altere a action Index para o seguinte:
public ActionResult Index()
{
    object model = "With Razor View!";

    return View(model);
}
  • Run Razor, run!

Download

Para quem quiser, coloquei esse projeto de exemplo no GitHub.