Je dois être en mesure de créer un lien dans l'action sur le contrôleur pour envoyer un e-mail. Quelle est la meilleure pratique pour ce faire? Je ne veux pas le construire moi-même au cas où mes itinéraires changeraient.
Dois-je avoir une vue pour chaque e-mail, le rendre et l'envoyer? Cela pourrait être une bonne façon de procéder.
asp.net
asp.net-mvc
ScottBelchak
la source
la source
Si vous avez besoin de l'URL complète (par exemple pour envoyer par e-mail), envisagez d'utiliser l'une des méthodes intégrées suivantes:
Avec cela, vous créez l'itinéraire à utiliser pour créer l'url:
Ici, l'URL est construite après que le moteur d'itinéraire a déterminé la bonne:
Dans les deux méthodes, les 2 derniers paramètres spécifient le protocole et le nom d'hôte.
Cordialement.
la source
Url.Action(action, controller, routevalue, protocol)
produit également une URL complète, vous n'avez donc pas à spécifier le nom d'hôte si vous n'en avez pas besoin.J'ai eu le même problème, et il semble que la réponse de Gidon a un petit défaut: elle génère une URL relative, qui ne peut pas être envoyée par courrier.
Ma solution ressemble à ceci:
De cette façon, une URL complète est générée, et cela fonctionne même si l'application est à plusieurs niveaux de profondeur sur le serveur d'hébergement et utilise un port autre que 80.
EDIT: J'ai trouvé cela utile aussi.
la source
Une autre façon de créer une URL absolue vers une action:
la source
Je sais que c'est une vieille question, mais juste au cas où vous essayez de faire la même chose dans ASP.NET Core, voici comment vous pouvez créer UrlHelper dans une action:
Ou, vous pouvez simplement utiliser la
Controller.Url
propriété si vous héritez deController
.la source