Utiliser Html.ActionLink et Url.Action (...) depuis le contrôleur
Je veux écrire un HtmlHelper de rendre un ActionLink avec des valeurs prédéfinies, par exemple.
<%=Html.PageLink("Page 1", "page-slug");%>
où PageLink
est une fonction qui s'appelle ActionLink
avec une Action et d'un régulateur, par exemple. "Index" et "Page".
Depuis HtmlHelper
et UrlHelper
n'existent pas à l'intérieur d'un Controller
ou de la classe, comment puis-je obtenir l'URL relative à une action dans l'intérieur de la classe?
Mise à jour: compte tenu de la période additionnelle de trois ans des acquis de l'expérience 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 une autre non testés point de rupture et un nouveau besoin de formation pour les locations sans ajout de valeur réelle que ce soit. Il pense que la conception d'un système complexe. Pourquoi en ajouter une autre pièce en mouvement, à moins qu'il ajoute de la fiabilité (pas), la lisibilité (peu, une fois que vous lisez plus docs), la vitesse (aucun) ou de la concurrence (aucun).
source d'informationauteur Petrus Theron
Vous devez vous connecter pour publier un commentaire.
Pas sûr que je fait comprendre clairement à ta question, mais, laissez-moi essayer.
Pour créer un HtmlHelper extension comme vous l'avez décrit, essayez quelque chose comme:
Quant à votre question sur l'obtention d'une URL à partir d'une classe, dépend du type de classe vous allez mettre en œuvre. Par exemple, si vous voulez obtenir le régulateur de courant et de l'action à partir d'un HtmlHelper extension, vous pouvez utiliser:
Si vous voulez l'obtenir à partir d'un contrôleur, vous pouvez utiliser les propriétés/méthodes de la classe de base (Contrôleur) pour la construction de l'URL. Par exemple: