tag route pass parameter page net mvc data asp all asp.net-mvc razor html-helper

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>