Domanda

Oggi ho trovato una caratteristica molto bella dandomi la possibilità di aggiungere Helper CSHTML.Per poterlo fare, devo mettere il file cshtml in una cartella denominata 'app_code' e quindi aggiungere in un codice che assomiglia a questo:

@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>
   }
}
.

Il problema è immediatamente dopo aver aggiunto questa cartella con un solo file, quando provo a accedere alla pagina nel browser, ricevo un errore del server.

"NetworkError: 500 Errore del server interno - http:// localhost / [porta] ...

Ho già il codice in altre cartelle del mio progetto.

Devi muovere tutto il mio codice nella cartella 'App_code' o c'è qualche trucco per mantenere la mia struttura esistente ma con questa nuova cartella 'App_Code'?

Grazie.

È stato utile?

Soluzione

Non puoi usare Helphers all'interno dell'helper in modo che non siano utili come avrete inizialmente pensati :-)

Cose come Html e Url non esistono all'interno di quelle funzioni dell helper.Quindi, se devi usarli, dovrai passarli come parametri:

@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 quando si chiama passano l'istanza dell'URLHELLER corrente ad esso:

@Foo.jQuery(Url)
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top