route - Url helper para la url completa en asp.net mvc-3
select asp-for asp-items (3)
Escritura
@Url.Content("~/Something/Something.html")
en maquinillas de afeitar
/AppFolder/Something/Something.html
¿Hay una manera de representar la URL completa como http://www.something.com/AppFolder/Something/Something.html
sin hacks atroces? (como almacenar el protocolo y el dominio en AppConfig
y concatenar la cadena)
¿Hay un ayudante como @Url.FullPath("~/asdf/asdf")
o similar?
El @ Url.RouteURL () no silencia la respuesta a esta pregunta. Funciona para rutas con nombre, pero se queda corto para rutas virtuales arbitrarias. Aquí está el método de ayuda rápida que genera la url de salida completa. Puede crear sobrecargas para varios esquemas (http [s]) dependiendo del grado de control deseado.
public static class UrlHelperExtension
{
public static string ContentFullPath(this UrlHelper url,string virtualPath)
{
var result = string.Empty;
Uri requestUrl = url.RequestContext.HttpContext.Request.Url;
result = string.Format("{0}://{1}{2}",
requestUrl.Scheme,
requestUrl.Authority,
VirtualPathUtility.ToAbsolute(virtualPath));
return result;
}
}
Para cualquier persona que necesite crear URL en WebAPI 2.2 y / o MVC5, esto funcionó para mí:
// works in a controller
var requestUri = this.Request.RequestUri;
// just the http/s and the hostname; ymmv
string baseUrl = requestUri.Scheme + "://" + requestUri.Authority + "/";
// build your url for whatever purpose you need it for
string url = baseUrl + "SomeOtherController?id=" + <some_magic_value>;
Ver esta entrada de blog para la respuesta.
Básicamente, todo lo que necesitas para hacerlo incluye el parámetro de protocolo, por ejemplo,
Url.Action("About", "Home", null, "http")