A Microsoft jura que não mas ao que tudo indica, para aplicações WEB será adotado o padrão MVC, através do ASP.NET MVC, ficando os Web Forms em segundo plano.
Apesar de ser uma grande quebra de paradigma em relação aos “antigos” Web Forms, a introdução deste padrão traz consigo uma série de vantagens, entre as quais eu destaco a maior facilidade de deixar o site dentro dos webstandards, a testabilidade e uma série de recursos que deixam o trabalho mais produtivo.
Dificilmente alguém irá converter todo um projeto web já pronto em Web Forms de uma só vez para MVC, afinal isso exigiria tempo e dinheiro que ninguém tem.
Felizmente, é possível conviver com os dois tipos de padrões ao mesmo tempo, possibilitando uma conversão gradual e/ou usar o que cada padrão tem de melhor.
Por outro lado você pode preferir (como eu), usar o tipo de projeto “Website” ao invés do tipo Web Application que vem por default no ASP.Net MVC. As dicas abaixo servirão para esse caso também.
Instalando o Kit-Gás no seu Web Site.
É extremamente simples deixar seu site preparado para trabalhar de forma híbrida:
a) Referencie as DLLs do ASP.NET MVC. Por padrão elas ficam em C:\Program Files\Microsoft ASP.NET\ASP.NET MVC Beta\Assemblies;
b) no web.config, adicione as seguintes chaves dentro da seção <system.web:
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
c) Como iremos usar muito código "embedded" nas Views, vamos facilitar colocando os namespaces no web.config, dentro de :
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Linq"/>
<add namespace="System.Collections.Generic"/>
</namespaces>
d) (apenas para Web Applications). Mude as páginas de CODEBEHIND pra CODEFILE. Para fazer isso basta alterar na diretiva <% Page o parâmetro CodeBehind=”xxx.asp.cs” para CodeFile=”xxx.asp.cs”.
e) O global.asax também deve ser mudado conforme acima. No caso das aplicações “website”, é interessante (mas não obrigatório) colocar o código do global.asax em um arquivo .cs também ao invés de ficar tudo no próprio global.asax.
Altere a diretiva
<%@ Application Language="C#" %>
Para:
<%@ Application CodeFile="Global.asax.cs" Inherits="MvcApplication1.MvcApplication"
Language="C#" %>
Você deve trocar o MvcApplication1 pelo seu namespace.
Preencha o arquivo Global.asax.cs com o código de roteamento, como por exemplo:
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
public partial class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameter
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
f) Coloque os CONTROLLERS e MODELS do MVC dentro da pasta App_Code. Eles não poderão ficar na raíz pois não serão compilados.
Se você for usar a versão 6 do IIS para rodar seu website MVC, você precisa adicionar um mapeamento para que todas as requisições passem pelo interpretador do asp.net (aspnet_isapi.dll).
Veja abaixo como fazer esse mapeamento:
Não esqueça de desmarcar a opção "Verify that file exists"
Você pode encontrar informações mais detalhadas sobre esse mapeamento em http://go.microsoft.com/?LinkId=9394801
O arquivo abaixo contém um exemplo de projeto website convertido para funcionar com MVC também: