2013-01-29 9 views

Antwort

6

Verwenden Sie this .Um die "@helper" -Funktion in Razor zu verwenden, müssen Sie die CSHTML-Datei in den App_Code-Ordner Ihrer App platzieren. In ASP.NET MVC 3 gibt es keinen Ordner "Views/Helpers". Der Blogpost von ScottGu wurde geschrieben, bevor das Feature vollständig implementiert wurde, und einige der darin enthaltenen Notizen sind nicht mehr vollständig korrekt.

Um den "@helper", den Sie geschrieben haben, zu benennen, müssen Sie sowohl den Dateinamen als auch den Namen des Helfers darin einfügen. wenn Sie diese Helfer haben zum Beispiel:

~/App_Code/MyHelper.cshtml 

Und diesen Inhalt:

@helper ShowStuff(string stuff) { 
    <p>@stuff</p> 
} 

Dann rufen Sie es wie folgt:

@MyHelper.ShowStuff("some stuff!") 
+0

Der Helfer nur mit der Datei im App_Code arbeitet Mappe. –

+0

Ich habe ein Problem bei der Bereitstellung an einen Hosting-Provider festgestellt, der den App_Code-Ordner nicht erlaubt hat. Daher kann ich diese Helfer derzeit überhaupt nicht verwenden. http://StackOverflow.com/a/16057766/678338 –

+0

@SeanMill Sie können dies oben in der Ansicht "@ usingProject.Helpers" hinzufügen und Ihren Helfer "@ Html.MyCustomHelper()" verwenden. Bei meiner Anwendung füge ich ein neues Projekt zur Lösung namens UtilsProject hinzu und innerhalb dessen habe ich meinen benutzerdefinierten Helfer. –

1

Sie haben eine gute Struktur.

Ich würde den HTML-Ordner mit einem Dienstprogrammordner ändern. Hier können Sie alle Helfer hinzufügen.

  • Controller
  • Modelle
  • Ansichten
  • Dienstprogramm
  • Rahmen

Und es tatsächlich keine Lösung "best practice" (dies kann für das Bootstrapping Ihrer App sehr nützlich sein) . Stellen Sie nur sicher, dass Sie Ihre Klassen an den offensichtlichen Orten finden können. Wenn nicht umgestalten.