J'ai une application ASP.NET MVC3 (avec Razor) où je permet aux utilisateurs de spécifier des composants pour la vue - comme la mise en page, ou partiels que j'utilise pour rendre le contenu. (Par exemple, j'ai un modèle qui a un Title
et Description
, et je permets aux utilisateurs de spécifier un CSHTML partiel dans un répertoire particulier que j'utilise pour rendre les données.)Razor et la création d'aides pour les utilisateurs: Html. *
Le problème que je suis en cours d'exécution en est isolement et facilité d'utilisation pour mes utilisateurs. Par exemple, ils peuvent coder actuellement écrire dans leurs partials comme:
@Html.ActionLink("edit", "Edit", "Content", new { Id = Model.Id }, null)
je place comme eux d'écrire quelque chose comme:
@SomeHelper.EditLinkFor(Model.Id)
En ce moment, mes contrôleurs font partie de l'API publique . Les utilisateurs doivent connaître les noms des contrôleurs et des actions pour spécifier certains liens (par exemple, modifier le lien). Je voudrais fournir une API simplifiée.
Mais comment faire? Si je viens de créer la classe SomeHelper
, essayer d'appeler @Html.ActionLink
ne fait pas beaucoup de progrès. J'ai essayé d'écrire:
return System.Web.Mvc.Html.LinkExtensions.ActionLink(null, content.Title, "Details", "Content", new { Id = content.Id }, null);
Mais j'obtiens une exception de pointeur nul. Créer une instance HtmlHelper
pour le premier paramètre n'est pas facile.
Quelles sont mes options? Suis-je obligé de leur fournir un accès complet à tous mes contrôleurs dans le cadre de mon API? N'y a-t-il aucun moyen de fournir une API simplifiée pour leur consommation? (Je n'essaie pas de les empêcher d'écrire du code Razor, encapsule et simplifie les appels, et élimine une dépendance sous-jacente sur mes contrôleurs et modèles.)
L'option a est cool, mais pas ce dont j'ai besoin; L'option b était essentiellement la réponse, bien que je devais ramper un long chemin dans un trou de lapin pour le faire fonctionner. – ashes999
Je dois encore demander si est-il nécessaire d'aller à l'encontre de la simple commande du contrôleur/action de MVC? Les utilisateurs sont-ils inexpérimentés? La syntaxe Controller/Action facilite la tâche et toute personne connaissant MVC peut facilement trouver le code à suivre. –