48 votes

Razor: Assistants HTML déclaratifs

Je suis en train d'écrire une simple déclarative html helper:

@helper Echo(string input) {
    @input
}

Le helper fonctionne très bien si je l'intégrer dans la page que je veux l'utiliser sur. Mais si je le déplacer vers un autre .cshtml le fichier et placez le fichier dans l' ~/Views/Helpers répertoire, de mon point de vue ne peut pas être compilé de plus, parce que l'aide ne soit pas trouvé. Selon Scott Gu de l' article de blog sur le Rasoir , il doit travailler.

Ce que je fais mal?

49voto

marcind Points 38002

L'emplacement ~/Views/Helpers décrit dans cette publication ScottGu ne fonctionnera pas dans MVC 3 RTM. Au moment de la rédaction de cet article, nous étions en train de lancer une idée de conception, mais nous n'avons finalement pas été en mesure de la mettre en œuvre.

La mise en App_Code de vos assistants fonctionne, mais présente certaines limitations qui ont une incidence sur certains scénarios MVC (par exemple: aucun accès aux assistants MVC standard Html. )

36voto

DarkGray Points 4740

Contournement simple:

Dans chaque aide, ajoutez la page WebViewPage d'argument.

App_Code \ Test.cshtml:

 @using System.Web.Mvc.Html
@using System.Web.Mvc

@helper HelloWorld(WebViewPage page)
{
  @page.Html.Label("HelloWorld")
}
 

Cette utilisation d'aide dans n'importe quelle page:

  @Test.HelloWorld(this)
 

9voto

Andrew Nurse Points 4553

Comme marcind dit, nous n'étions pas en mesure de soutenir l' ~/Views/Helpers emplacement en raison de certaines limites de notre modèle de compilation.

Nous travaillons sur une meilleure solution pour déclarative HTML helpers, mais il ne fera pas de v1. Pour la v1, nous avons deux solutions:

  1. App_Code (qui a quelques problèmes que Marcin mentionné, mais fonctionne)
  2. David Ebbon (membre de l'équipe) a un Visual Studio add-in qui les compile dans votre DLL

6voto

Brian Ball Points 6468

J'ai suivi les étapes indiquées dans le blog de Scott en tant que bien et n'était pas en mesure de le faire fonctionner.

J'ai fait quelques recherches et trouvé ce lien: http://dotnetslackers.com/articles/aspnet/Experience-ASP-NET-MVC-3-Beta-the-Razor-View-Engine.aspx#s19-create-custom-helper-method

Suivi les étapes, et ça fonctionne. La clé semble être à la fois le dossier App_Code ainsi que d'utiliser le nom de fichier dot helper nom lors de l'appel à l'aide.

4voto

Jim Shaw Points 81

Je sais que c'est tard dans le jeu ... Mais passez dans la vue actuelle à la fonction d'assistance. De la vue, vous avez accès à HTML et aux fonctions d'assistance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X