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.

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top