Мне нужно создать ссылку в действии на контроллере, чтобы отправить электронное письмо. Что для этого лучше всего? Сам не хочу конструировать на случай, если маршруты поменяются.
Должен ли я иметь представление для каждого электронного письма, отображать его и отправлять? Это может быть хорошим способом сделать это.
asp.net
asp.net-mvc
ScottBelchak
источник
источник
Если вам нужен полный URL-адрес (например, для отправки по электронной почте), рассмотрите возможность использования одного из следующих встроенных методов:
Таким образом, вы создаете маршрут, который будет использоваться для создания URL:
Здесь URL-адрес создается после того, как движок маршрута определяет правильный:
В обоих методах последние 2 параметра определяют протокол и имя хоста.
С уважением.
источник
Url.Action(action, controller, routevalue, protocol)
также создает полный URL-адрес, поэтому вам не нужно указывать имя хоста, если вам не нужно.У меня была такая же проблема, и, похоже, ответ Гидона имеет один крошечный недостаток: он генерирует относительный URL-адрес, который нельзя отправить по почте.
Мое решение выглядит так:
Таким образом создается полный URL-адрес, и он работает, даже если приложение находится на нескольких уровнях на сервере хостинга и использует порт, отличный от 80.
РЕДАКТИРОВАТЬ: Я тоже нашел это полезным.
источник
Другой способ создать абсолютный URL-адрес действия:
источник
Я знаю, что это старый вопрос, но на всякий случай, если вы пытаетесь сделать то же самое в ASP.NET Core, вот как вы можете создать UrlHelper внутри действия:
Или вы можете просто использовать
Controller.Url
свойство, если наследуете отController
.источник