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.

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top