Ich muss eine Funktion erstellen, die nur in einer cshtml-Datei erforderlich ist. Sie können sich meine Situation als ASP.NET-Seitenmethoden vorstellen, bei denen es sich um minimale Webdienste handelt, die auf einer Seite implementiert sind, da sie auf eine Seite beschränkt sind. Ich kenne HTML-Helfer (Erweiterungsmethoden), aber meine Funktion wird nur in einer cshtml-Datei benötigt. Ich weiß nicht, wie man eine Funktionssignatur in einer Ansicht erstellt. Hinweis : Ich verwende die Razor Template Engine.
asp.net-mvc
asp.net-mvc-3
razor
Saeed Neamati
quelle
quelle
@functions
Methoden einfügen, daher gefällt mir diese Antwort.Warum nicht einfach diese Funktion in der cshtml-Datei deklarieren?
quelle
functions
bietet die Lösung mehr Flexibilität für andere Rückgabetypen. Beide Antworten erhalten in meinem Buch jedoch +1, da sie beide nützliche Informationen sind.<p>Welcome, @username.</p>
versusreturn new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
.@helper
in einer einzelnen Ansicht macht es jedoch nicht für andere Ansichten verfügbar. Der Grund, warum ich @helper besser mag, ist, dass Sie HTML zwischen Ihre geschweiften Klammern setzen können.@functions
lässt dich das nicht (leicht) machen.@helper
und@functions
können von vielen Ansichten gemeinsam genutzt werden, und beide können in einer einzelnen Ansicht deklariert und von dieser verwendet werden (und ich habe persönlich festgestellt, dass sie in beiden gemeinsam genutzten / einzelnen Szenarien verwendet werden können). IMHO ist der einzige praktische Unterschied zwischen ihnen die Tatsache, dass ein Ansichtshelfer syntaktischen Zucker für die Rückgabe gerenderter HTML-Snippets (oder besser gesagtHelperResult
Instanzen) hinzufügt , während eine Ansichtsfunktion normalerweise nur für die Rückgabe einfacher Referenz- oder Werttypen nützlich ist.Wenn Ihre Methode kein HTML zurückgeben muss und etwas anderes tun muss, können Sie in Razor ein Lambda anstelle einer Hilfsmethode verwenden
quelle
Schauen Sie sich Declarative Razor Helpers an
quelle
Wenn Sie auf die globalen Variablen Ihrer Seite zugreifen möchten, können Sie Folgendes tun:
quelle
GetLoadingState()
Hier ist die lokale Funktion.