Je souhaite écrire un HtmlHelper pour rendre un ActionLink avec des valeurs prédéfinies, par exemple.Utilisation de Html.ActionLink et Url.Action (...) depuis le contrôleur
<%=Html.PageLink("Page 1", "page-slug");%>
où PageLink
est une fonction qui appelle ActionLink
avec une action connue et contrôleur, par exemple. "Index" et "Page".
Puisque HtmlHelper
et UrlHelper
n'existent pas dans une classe Controller
, comment puis-je obtenir l'URL relative d'une action à l'intérieur d'une classe?
Mise à jour: Compte tenu des trois années d'expérience accumulées supplémentaires que j'ai maintenant, voici mon conseil: il suffit d'utiliser Html.ActionLink("My Link", new { controller = "Page", slug = "page-slug" })
ou mieux encore,
<a href="@Url.Action("ViewPage",
new {
controller = "Page",
slug = "my-page-slug" })">My Link</a>
Votre méthode d'extension peut être mignon et court, mais il ajoute un autre point de non-test non testé et une nouvelle exigence d'apprentissage pour les embauches sans ajouter aucune valeur réelle. Pensez-y comme la conception d'un système complexe. Pourquoi ajouter une autre partie mobile, sauf si elle ajoute la fiabilité (non), la lisibilité (peu, une fois que vous avez lu plus docs), la vitesse (aucun) ou la concurrence (aucun).
+1 pour la mise à jour. Je voudrais également pointer les futurs chercheurs à cette question en appelant 'Url.Action' de l'intérieur du contrôleur - http://stackoverflow.com/questions/2031995/call-urlhelper-in-models-in-asp-net-mvc – brichins