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 min. Webservices handelt, die auf einer Seite implementiert sind, da sie nur eine Seite umfassen. 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.
Sie können die @helper Razor-Direktive verwenden:
@helper WelcomeMessage(string username)
{
<p>Welcome, @username.</p>
}
Dann rufst du es so an:
@WelcomeMessage("John Smith")
warum deklarieren Sie diese Funktion nicht einfach in der cshtml-Datei?
@functions{
public string GetSomeString(){
return string.Empty;
}
}
<h2>index</h2>
@GetSomeString()
Wenn Ihre Methode kein HTML zurückgeben muss und etwas anderes tun muss, können Sie in Razor eine Lambda anstelle einer Hilfsmethode verwenden
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
Func<int,int,int> Sum = (a, b) => a + b;
}
<h2>Index</h2>
@Sum(3,4)
Werfen Sie einen Blick auf Deklarative Rasierhelfer
Wenn Sie auf die globalen Variablen Ihrer Seite zugreifen möchten, können Sie dies tun:
@{
ViewData["Title"] = "Home Page";
var LoadingButtons = Model.ToDictionary(person => person, person => false);
string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty;
}