« Voltar
em ASP.NET web ASP.NET MVC

Pra que serve o web.config dentro da pasta views?.

Você que programa em ASP.NET MVC com certeza pelo menos uma vez na vida foi fazer algum tipo de configuração em sua aplicação e ela não funcionou ou deu algum erro bizarro. E aí quando você foi ver o porque, foi porque você colocou a configuração dentro do web.config errado, aquele que fica dentro da pasta Views.

Mas pra que serve esse web.config se eu já tenho um fora?

A funcionalidade principal desse arquivo é proibir o acesso direto às views. Quando estamos trabalhando com MVC, a ideia é que sempre acessemos as rotas através das actions de nossos controllers, mais ou menos no seguinte formato:

http://meusite.com.br/funcionario/lista  

Se você tentar acessar uma view diretamente, assim:

http://meusite.com.br/views/funcionario/lista.cshtml  

Não funciona, certo? Você tem que passar primeiro pela action do controller!
Quem bloqueia esse acesso direto é o web.config que fica dentro da pasta views.
Se você der uma olhada, ele tem o seguinte trecho de configuração:

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />  

Essa linha bloqueia o acesso direto à suas views.

Além disso, esse arquivo configura o compilador e namespaces importantes para as views.
Quando vamos usar um modelo em uma view, temos que usar o namespace todo desse modelo, da seguinte forma:

@model BlogDoGabs.Models.Funcionario

Mas e se eu quisesse automaticamente importar o namespace BlogDoGabs.Models para todas as views?
Aí é só incluir o namespace nesse web.config:

<system.web.webPages.razor>  
//configuracao omitida
<pages pageBaseType="System.Web.Mvc.WebViewPage">  
  <namespaces>
    //outros namespaces
    <add namespace="BlogDoGabs.Models" />
  </namespaces>
</pages>  
</system.web.webPages.razor>  

Nesse arquivo você pode também "sobrescrever" configurações(connection strings, por exemplo) do web.config principal para coisas que você queira usar somente para as views.

Esses exemplos servem para o ASP.NET MVC versão 5.

Alguma dúvida? Quer saber algo em específico?
Comenta aí! (:


Já que você leu até aqui, porque não curte minha página lá no Face pra ficar em dia com as minhas postagens e outras coisas legais?
O endereço é https://www.facebook.com/devgabsferreira (:

comments powered by Disqus