J'ai besoin de créer une fonction qui n'est nécessaire que dans un fichier cshtml. Vous pouvez penser à ma situation en tant que méthodes de page ASP.NET, qui sont des services Web min implémentés dans une page, car elles sont limitées à une page. Je connais les assistants HTML (méthodes d'extension), mais ma fonction est simplement requise dans un fichier cshtml. Je ne sais pas comment créer une signature de fonction dans une vue . Remarque : J'utilise le moteur de modèle Razor.
Vous pouvez utiliser la directive @helper Razor:
@helper WelcomeMessage(string username)
{
<p>Welcome, @username.</p>
}
Ensuite, vous l'invoquez comme ceci:
@WelcomeMessage("John Smith")
pourquoi ne pas simplement déclarer cette fonction dans le fichier cshtml?
@functions{
public string GetSomeString(){
return string.Empty;
}
}
<h2>index</h2>
@GetSomeString()
Si votre méthode ne doit pas renvoyer de code HTML et doit faire autre chose, vous pouvez utiliser une méthode lambda au lieu d'une méthode auxiliaire dans Razor
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
Func<int,int,int> Sum = (a, b) => a + b;
}
<h2>Index</h2>
@Sum(3,4)
Jetez un oeil à Declarative Razor Helpers
Si vous souhaitez accéder aux variables globales de votre page, vous pouvez le faire:
@{
ViewData["Title"] = "Home Page";
var LoadingButtons = Model.ToDictionary(person => person, person => false);
string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty;
}