Ich muss in der Lage sein, einen Link in der Aktion auf dem Controller zu erstellen, um eine E-Mail zu senden. Was ist die beste Vorgehensweise, um dies zu tun? Ich möchte es nicht selbst konstruieren, falls sich meine Routen ändern.
Sollte ich für jede E-Mail eine Ansicht haben und diese rendern und senden? Das könnte ein guter Weg sein, es zu tun.
asp.net
asp.net-mvc
ScottBelchak
quelle
quelle
Wenn Sie die vollständige URL benötigen (z. B. zum Senden per E-Mail), sollten Sie eine der folgenden integrierten Methoden verwenden:
Damit erstellen Sie die Route zum Erstellen der URL:
Hier wird die URL erstellt, nachdem die Routen-Engine die richtige ermittelt hat:
Bei beiden Methoden geben die letzten beiden Parameter das Protokoll und den Hostnamen an.
Grüße.
quelle
Url.Action(action, controller, routevalue, protocol)
Ihrer Information wird auch die vollständige URL erstellt, sodass Sie keinen Hostnamen angeben müssen, wenn Sie dies nicht benötigen.Ich hatte das gleiche Problem und es scheint, dass Gidons Antwort einen winzigen Fehler aufweist: Sie generiert eine relative URL, die nicht per Post gesendet werden kann.
Meine Lösung sieht folgendermaßen aus:
Auf diese Weise wird eine vollständige URL generiert, die auch dann funktioniert, wenn sich die Anwendung auf dem Hosting-Server auf mehreren Ebenen befindet und einen anderen Port als 80 verwendet.
EDIT: Ich fand das auch nützlich.
quelle
Eine andere Möglichkeit, eine absolute URL zu einer Aktion zu erstellen:
quelle
Ich weiß, dass dies eine alte Frage ist, aber nur für den Fall, dass Sie versuchen, dasselbe in ASP.NET Core zu tun, können Sie den UrlHelper wie folgt in einer Aktion erstellen:
Oder Sie können die
Controller.Url
Eigenschaft einfach verwenden, wenn Sie von erbenController
.quelle