Como habilitar MVC no ASP.NET Core

Você criou um projeto ASP.NET Core usando o template Empty e percebeu que o MVC não vem habilitado por padrão?

O template de projeto Empty do ASP.NET Core cria um projeto que contém a configuração mínima do ASP.NET Core sem qualquer suporte MVC. Isso significa que alguns passos extras são necessários para habilitar o MVC para que recursos como controllers e views funcionem.

Aqui vão os passos para habilitar o MVC em um projeto com o template “Empty” do ASP.NET Core.

Comece modificando o arquivo project.json. Dentro de “dependencies”, adicione a entrada: “Microsoft.AspNetCore.Mvc”: “1.1.2”.

arquivo project.json
Figura 1: Adicionando MVC como dependência no arquivo project.json

Agora você tem tudo o que precisa para começar a usar o MVC, isto é, começar a definir routes, controllers e views.

Habilitando o MVC

Primeiro, abra o arquivo Startup.cs para edição.

Classe Startup
Figura 2: Abrindo o arquivo Startup.cs

Faça as seguintes edições no arquivo Startup.cs:

EdicoesStartup.png
Figura 3: Habilitando MVC no arquivo Startup.cs

Aqui o código completo para você copiar:


namespace ASPNETCore.Demo
{

    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.Logging;

    using Microsoft.Extensions.DependencyInjection;

    public class Startup
    {

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();

            //app.Run(async (context) =>;
            //{
            // await context.Response.WriteAsync("Hello World!");
            //});

            app.UseMvc(routes =>;
            {
                routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
            });

        }
    }
}

Criando o Controller e a View

Você vai observar que não temos as pastas Controllers e Views que são criadas no template do ASP.NET MVC. No ASP.NET Core, os controllers podem ser adicionados em qualquer lugar, isto é, você não precisa adicioná-los à pasta Controllers. Entretanto, para mudar essas convenções, você precisa substituir os componentes padrões do MVC com sua própria implementação (fora de escopo deste artigo). Para efeitos de simplicidade, vamos utilizar as pastas Controllers e Views.

Crie as pastas Controllers e Views em seu projeto ASP.NET Core.

Controllers Views
Figura 4: Adicionando as pastas Controllers e Views

Agora, adicione uma classe com o nome “HomeController” na pasta Controllers.

HomeController
Figura 5: Adicionando a class HomeController

Em ASP.NET Core MVC, um controller pode ser qualquer classe que possui “Controller” ao final do nome (por isso nomeamos “HomeController”).

Por convenção, controllers:

  • São adicionados à uma pasta “Controllers” na raiz do projeto.
  • Herdam da classe Microsoft.AspNetCore.Mvc.Controller.

Agora, na classe HomeController implemente o código abaixo:

using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
     public IActionResult Index()
     {
          return View();
     }
}

Próximo passo, na pasta Views adicione uma pasta chamada Home e depois adicione uma view chamada Index dentro da pasta Home:

AddingView.png
Figura 6: Adicionando a view Index

Agora, no arquivo Index.cshtml implemente o código abaixo:

<div>
<h1>Hello World from a view</h1>
</div>

Se você executar o seu código deverá ver uma página com a mensagem de “Hello World”.

RunSite.png
Figura 7: Executando o código

Habilitando os arquivos estáticos

Arquivos estáticos são arquivos HTML, CSS, JavaScript, imagens e etc. Estes arquivos são armazenadas em qualquer lugar dentro da pasta wwwroot da sua solução ASP.NET Core.

ArquivosEstaticos
Figura 8: Pasta wwwroot

Para que você possa habilitar o uso de arquivos estáticos você deve configurar o Middleware para adicionar arquivos estáticos ao pipeline. Você configura o Middleware de arquivos estáticos adicionando a dependência do pacote Microsoft.AspNetCore.StaticFiles ao arquivo project.json e adicionando a chamada ao método UseStaticFiles() no método Configure() do arquivo Startup.

Abra o arquivo project.json e adicione a entrada “Microsoft.AspNetCore.StaticFiles”: “1.0.0” em “dependencies”:

ProjectJsonStaticFile
Figura 9: Adicionando Static Files ao arquivo project.json

Por fim, mas não menos importante, abra o arquivo Startup.cs e adicione a seguinte chamada no método Configure:

ArquivosEstaticosStartup
Figura 10: Habilitando o uso de arquivos estáticos

Tendo feito isto, agora você é capaz de referenciar arquivos estáticos (js, css, imagens) nas views de seu projeto. Veja o exemplo abaixo onde eu criei uma view chamada _Layout.cshtml e adicionei referências aos arquivos index.css e index.js.

ReferenciandoArquivosEstaticos
Figura 11: Referenciando arquivo estático

Neste artigo eu demonstrei como habilitar o MVC e o uso de arquivos estáticos no ASP.NET Core. Obviamente que existem muitos outros Middlewares que você pode habilitar em sua aplicação tais como autenticação – app.UseIdentity() -, tratamento de exceção – app.UseExceptionHandler(“/Home/Error”) -, compressão – app.UseResponseCompression() -, e etc.

Eu disponibilizei a minha solução no Github caso você queira baixar e comparar: JANeto87/blog/tree/master/aspnet-core/empty-solution/setup-empty-aspnetcore.

E assim encerro este artigo.

Referências:

Hilton, Jon. “How To Add MVC To Your ASP.NET Core Web Application – Jonhilton.Net“. jonhilton.net. N.p., 2017. Web. 7 Mar. 2017.

Dykstra, Tom and Steve Smith. “Application Startup In ASP.NET Core“. Docs.microsoft.com. N.p., 2017. Web. 8 Mar. 2017.

Smith, Steve. “Handling Requests With Controllers In ASP.NET MVC Core“. Docs.microsoft.com. N.p., 2017. Web. 9 Mar. 2017.

Anderson, Rick. “Working With Static Files In ASP.NET Core“. Docs.microsoft.com. N.p., 2017. Web. 10 Mar. 2017.

Freeman, Adam. Pro ASP.NET Core MVC. 6th ed. Print.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s