asp.net-mvc - route - href mvc razor
Cómo codificar correctamente los enlaces a una URL externa en MVC Razor (5)
Esta vista supone mostrar una lista de hipervínculos, cada uno apuntando a una URL externa. El objetivo es que el usuario haga clic en uno de estos enlaces y que su navegador abra una nueva pestaña con la URL seleccionada. Actualmente tengo el siguiente marcado:
@Html.ActionLink("SomeSite", "http://subdomain.mydomain.com/SomeSite")
Este marcado produce:
http://localhost:58980/AccessInstance/http%3a/subdomain.mydomain.com/SomeSite
en lugar de :
http://subdomain.mydomain.com/SomeSite
¿Qué puedo cambiar en mi marcado para hacer que esto funcione como espero?
No necesita usar @Html.ActionLink
para eso. Solo use una etiqueta simple A:
<a href="http://subdomain.mydomain.com/SomeSite">SomeSite</a>
Html.ActionLink
es específicamente para generar enlaces a acciones definidas en controladores MVC, en la misma aplicación . Como está enlazando a una URL absoluta, no necesita ninguna de las funciones que proporciona Html.ActionLink
.
Debe tener en cuenta su RouteConfiguration.
routes.MapRoute (nombre: "Predeterminado", url: "{controller} / {action}"
porque está especificando el enlace de acción como el enlace completo que desea redireccionar. Te recomendaría que uses la respuesta de @rossipedia porque puedes hacer cosas complicadas como poner un lapso dentro del enlace
Dos caminos :
1. actualice la columna de la base de datos con el enlace completo:
por ejemplo, SQL
:
update ProductTable set LinkColumn=''http://www.example.com/Product/Mobiles'' where ID=123
En la vista asp mvc
<a href="@model.ProductLink">View</a>
2. Hardcode la parte http
y la lista del modelo
<a href="http://@model.ProductLink">View</a>
la esperanza ayuda a alguien
Mientras que un ViewBag se usa en exceso y no es la mejor opción la mayor parte del tiempo, esto es algo que he hecho al heredar la aplicación mvc de otra persona para hacer una solución rápida para una URL a la que necesitaba redirigir con un parámetro de querystring cambiante dinámicamente
<a target="_parent" href="http://localhost:56332/services/@ViewBag.factory">View Service</a>
Aquí para mostrar el enlace al que se puede hacer clic en la página de índice
<td>
@Html.ActionLink(item.FileName, "../Uploads/Catalogue/"+item.FileName)
</td>