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 osusing System.Web.MvceSystem.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
Controllersno projeto. - Dentro desse diretório, crie um novo controller chamado Home, que nada mais é do que uma classe de nome
HomeController, que herdaController(namespaceSystem.Web.Mvc). - Nesse controller, adicione a action
Index.HomeControllerficará 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.WebPageseSystem.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 aoHomeController. - 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
Indexpara 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.