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.

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top