Erro de lançamento do Asp.Net MVC quando adiciono a pasta 'App_Code'
-
12-12-2019 - |
Pergunta
Hoje, encontrei um recurso muito interessante que me permite adicionar um auxiliar cshtml.Para poder fazer isso, devo colocar o arquivo cshtml em uma pasta chamada 'App_Code' e depois adicionar um código parecido com este:
@using System.Security.Policy
@helper jQuery(){
if (System.Diagnostics.Debugger.IsAttached)
{
<script src="@Url.Content("~/Scripts/JQuery/jquery-1.7.2.js")" type="text/javascript"></script>
}
else
{
<script src="@Url.Content("~/Scripts/JQuery/jquery-1.7.2.min.js")" type="text/javascript"></script>
}
}
O problema é logo após adicionar esta pasta com apenas um arquivo, quando tento acessar a página no navegador, recebo um erro de servidor.
"Erro de rede:500 Erro interno do servidor - http://localhost/[Porta]...
Já tenho código em outras pastas do meu projeto.
Devo mover todo o meu código para a pasta 'App_Code' ou existe algum truque para manter minha estrutura existente, mas com esta nova pasta 'App_Code'?
Obrigado.
Solução
Você não pode usar ajudantes dentro do ajudante, então eles não são tão úteis quanto você poderia ter pensado inicialmente :-)
Coisas como Html
e Url
não existem nessas funções auxiliares.Então se precisar utilizá-los, você terá que passá-los como parâmetros:
@using System.Web.Mvc
@using System.Security.Policy
@helper jQuery(UrlHelper urlHelper)
{
if (System.Diagnostics.Debugger.IsAttached)
{
<script src="@urlHelper.Content("~/Scripts/JQuery/jquery-1.7.2.js")" type="text/javascript"></script>
}
else
{
<script src="@urlHelper.Content("~/Scripts/JQuery/jquery-1.7.2.min.js")" type="text/javascript"></script>
}
}
e ao chamar, passe a instância do UrlHelper atual para ele:
@Foo.jQuery(Url)