Necesito poder construir un enlace en la Acción en el controlador para enviar un correo electrónico. ¿Cuál es la mejor práctica para hacer esto? No quiero construirlo yo mismo en caso de que cambien mis rutas.
¿Debo tener una vista para cada correo electrónico y representarlo y enviarlo? Esa podría ser una buena forma de hacerlo.
asp.net
asp.net-mvc
ScottBelchak
fuente
fuente
Si necesita la URL completa (por ejemplo, para enviar por correo electrónico) considere usar uno de los siguientes métodos integrados:
Con esto, crea la ruta a utilizar para construir la url:
Aquí la url se crea después de que el motor de ruta determine la correcta:
En ambos métodos, los últimos 2 parámetros especifican el protocolo y el nombre de host.
Saludos.
fuente
Url.Action(action, controller, routevalue, protocol)
también produce una URL completa, por lo que no tiene que especificar el nombre de host si no es necesario.Tuve el mismo problema, y parece que la respuesta de Gidon tiene una pequeña falla: genera una URL relativa, que no se puede enviar por correo.
Mi solución se ve así:
De esta forma, se genera una URL completa, y funciona incluso si la aplicación tiene varios niveles de profundidad en el servidor de alojamiento y utiliza un puerto que no sea 80.
EDITAR: También encontré esto útil.
fuente
Otra forma de crear una URL absoluta para una acción:
fuente
Sé que esta es una vieja pregunta, pero en caso de que esté tratando de hacer lo mismo en ASP.NET Core, así es como puede crear UrlHelper dentro de una acción:
O bien, podría usar la
Controller.Url
propiedad si hereda deController
.fuente