Errore di tiro MVC ASP.NET quando aggiungo la cartella 'app_code'
-
12-12-2019 - |
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.
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)
.