J'ai besoin de créer une fonction qui n'est nécessaire que dans un seul fichier cshtml. Vous pouvez considérer ma situation comme des méthodes de page ASP.NET, qui sont des services Web min implémentés dans une page, car ils sont limités à une page. Je connais les assistants HTML (méthodes d'extension), mais ma fonction est juste nécessaire 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.
asp.net-mvc
asp.net-mvc-3
razor
Saeed Neamati
la source
la source
@functions
méthodes, donc j'aime cette réponse.pourquoi ne pas simplement déclarer cette fonction dans le fichier cshtml?
la source
functions
solution offre plus de flexibilité pour les types de retour. Les deux réponses obtiennent +1 dans mon livre, car elles sont toutes les deux des informations utiles.<p>Welcome, @username.</p>
contrereturn new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
.@helper
dans une seule vue ne la rend pas disponible pour d'autres vues. la raison pour laquelle j'aime mieux @helper est que vous pouvez mettre du HTML entre vos accolades.@functions
ne vous laisse pas (facilement) faire ça.@helper
et@functions
peuvent être partagés entre de nombreuses vues, et les deux peuvent être déclarés dans et utilisés par une seule vue (et j'ai personnellement trouvé leur utilisation dans les deux scénarios partagés / simples). À mon humble avis, la seule différence pratique entre eux est le fait qu'un assistant de vue ajoute du sucre syntaxique pour renvoyer des extraits HTML rendus (ou, plus approprié, desHelperResult
instances), tandis qu'une fonction de vue n'est généralement utile que pour renvoyer des types de référence ou de valeur simples.Si votre méthode n'a pas à retourner du code HTML et doit faire autre chose, vous pouvez utiliser une méthode lambda au lieu de la méthode d'assistance dans Razor
la source
Jetez un œil aux aides déclaratives au rasoir
la source
Si vous souhaitez accéder aux variables globales de votre page, vous pouvez le faire:
la source
GetLoadingState()
voici la fonction locale.