Eu preciso ser capaz de construir um link na Ação no controlador para enviar um email. Qual é a melhor prática para fazer isso? Eu não quero construí-lo sozinho, caso minhas rotas mudem.
Devo ter uma visão para cada email, renderizá-lo e enviá-lo? Essa pode ser uma boa maneira de fazê-lo.
asp.net
asp.net-mvc
ScottBelchak
fonte
fonte
Se você precisar do URL completo (por exemplo, para enviar por email), considere usar um dos seguintes métodos internos:
Com isso, você cria a rota a ser usada para criar o URL:
Aqui, o URL é criado após o mecanismo de rota determinar o correto:
Nos dois métodos, os 2 últimos parâmetros especificam o protocolo e o nome do host.
Saudações.
fonte
Url.Action(action, controller, routevalue, protocol)
também produz URL completo, assim você não precisa especificar o nome do host se não precisar.Eu tive o mesmo problema e parece que a resposta de Gidon tem uma pequena falha: gera uma URL relativa, que não pode ser enviada por correio.
Minha solução é assim:
Dessa maneira, uma URL completa é gerada e funciona mesmo que o aplicativo esteja em vários níveis no servidor de hospedagem e use uma porta diferente de 80.
EDIT: Eu achei isso útil também.
fonte
Outra maneira de criar um URL absoluto para uma ação:
fonte
Sei que essa é uma pergunta antiga, mas, caso você esteja tentando fazer a mesma coisa no ASP.NET Core, veja como você pode criar o UrlHelper dentro de uma ação:
Ou, você pode apenas usar a
Controller.Url
propriedade se herdarController
.fonte