Asp.Net MVC génère une erreur lorsque j'ajoute le dossier 'App_Code'
-
12-12-2019 - |
Question
Aujourd'hui, j'ai trouvé une fonctionnalité très intéressante me donnant la possibilité d'ajouter un assistant cshtml.Pour pouvoir faire cela, je dois mettre le fichier cshtml dans un dossier nommé 'App_Code' puis l'ajouter à un code qui ressemble à ceci :
@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>
}
}
Le problème survient immédiatement après l'ajout de ce dossier avec un seul fichier. Lorsque j'essaie d'accéder à la page dans le navigateur, je reçois une erreur de serveur.
"Erreur réseau :500 Erreur de serveur interne - http://localhost/[Port]...
J'ai déjà du code dans d'autres dossiers de mon projet.
Dois-je déplacer tout mon code dans le dossier « App_Code » ou existe-t-il une astuce pour conserver ma structure existante mais avec ce nouveau dossier « App_Code » ?
Merci.
La solution
Vous ne pouvez pas utiliser d'assistants dans l'assistant, ils ne sont donc pas aussi utiles que vous auriez pu le penser au départ :-)
Des choses comme Html
et Url
n'existent pas dans ces fonctions d'assistance.Donc si vous avez besoin de les utiliser, vous devrez les passer en paramètres :
@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>
}
}
et lors de l'appel, transmettez-lui l'instance de l'UrlHelper actuel :
@Foo.jQuery(Url)