Asp.Net MVC löst einen Fehler aus, wenn ich den Ordner „App_Code“ hinzufüge
-
12-12-2019 - |
Frage
Heute habe ich eine sehr nette Funktion gefunden, die mir die Möglichkeit gibt, einen CSHTML-Helfer hinzuzufügen.Dazu muss ich die CSHTML-Datei in einem Ordner mit dem Namen „App_Code“ ablegen und dann einen Code hinzufügen, der so aussieht:
@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>
}
}
Das Problem besteht darin, dass ich unmittelbar nach dem Hinzufügen dieses Ordners mit nur einer Datei beim Versuch, im Browser auf die Seite zuzugreifen, eine Serverfehlermeldung erhalte.
"Netzwerkfehler:500 Interner Serverfehler – http://localhost/[Port]...
Ich habe bereits Code in anderen Ordnern meines Projekts.
Muss ich meinen gesamten Code in den Ordner „App_Code“ verschieben oder gibt es einen Trick, um meine bestehende Struktur beizubehalten, außer mit diesem neuen Ordner „App_Code“?
Danke schön.
Lösung
Sie können innerhalb des Helfers keine Helfer verwenden, daher sind sie nicht so hilfreich, wie Sie vielleicht zunächst gedacht haben :-)
Dinge wie Html
Und Url
existieren in diesen Hilfsfunktionen nicht.Wenn Sie sie also verwenden müssen, müssen Sie sie als Parameter übergeben:
@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>
}
}
und übergeben Sie beim Aufruf die Instanz des aktuellen UrlHelper an ihn:
@Foo.jQuery(Url)