2012-02-02 589 views
24

que necesito para obtener la URL raíz del sitio en la página de la maquinilla de afeitar en el código javascript:No se puede obtener la URL raíz del sitio en mvc asp

... 
var siteRootUrl = '@Url.Content("~")'; 
... 

Pero todo lo que consigo de esto es '/'.

+0

¿Qué estás esperando? –

+1

Mi sitio raíz. mysite.com o locahost: 4455 – 1110

Respuesta

53

Para obtener el host actual con el puerto (mysite.com, www.mysite.com o localhost: 9876)

Request.Url.Authority 

Para obtener su carpeta de la aplicación actual: (/ o/appfolder /)

Url.Content("~/") 

¿Para combinarlos?

String.Format("{0}://{1}{2}",Request.Url.Scheme, Request.Url.Authority,Url.Content("~/")) 

o (como torm señaló)

Url.Action("", null, null, Request.Url.Scheme) 
Url.Action("", null, null, "http") 
Url.Action("", null, null, "https") 

para generar una URL Acción:

Url.Action("About","Home",null,"http") 
+0

¡Excelente respuesta @ Splash-X! Estoy usando tu "mezcla", pero quería señalar una corrección ... Es Requst.Url.Scheme (no Schema). – bigmac

+0

El sepelio nunca fue mi punto fuerte. Actualicé mis errores tipográficos en el ejemplo de código. Gracias por la información @bmccleary –

2

@Url.Content() devuelve la ruta relativa de la raíz, que es la ruta desde la raíz de la dominio.

Así que si su sitio estaba en www.foo.com/site continuación Url.Content() devuelve/Zona de

respuesta de Ismael es correcta. Necesitarás analizar una url completa.

1

El @ Url.Content devuelve la URL relativa que es correcta. El siguiente código le da varias opciones para conseguir un realtive URL a través del código, la URL absoluta a través de código, absoluta a través de JavaScript:

<div>Site 'Relative Url = '@Url.Content("~")'</div> 
<div>Site 'Absolute Url = '@System.Web.HttpContext.Current.Request.Url.AbsoluteUri'</div> 

<script type="text/javascript"> 
    alert("site URL via js = " + location.href); 
</script> 

Obtendrá algo como:

Sitio 'URL relativa = '/' sitio 'Absolute url = 'http: // localhost: 14763 /'

y también la alerta JS muestra el href/URL absoluta

+0

Su respuesta tiene un pequeño problema de terminología; '/' es en realidad un "camino absoluto". El hecho de que comience con la barra lo hace absoluto y enraizado. Una ruta relativa comienza con un nombre o puntos: "../", "Imágenes/Jpg /". –

+0

Sí, tienes razón, error mío.:-) Lo he confabulado con la resolución de la ruta relativa. :-) – Glav

+0

jeje ... no es gran cosa; ¡Tuve que editar mi comentario porque cometí un par de errores! –

8

la manera más fácil de conseguir que sé absoluteURI sería

@Url.Action("", null, null, "http") 
+0

Para ser sincero, nunca pensé en hacerlo de esta manera, ¡buen toque! –

+1

Esto dará el nombre del controlador también, si se llama desde dentro de un método de controlador. – toddmo

Cuestiones relacionadas