En versiones anteriores de asp.net, podríamos usar
@Request.Url.AbsoluteUri
Pero parece que ha cambiado. ¿Cómo podemos hacer eso en asp.net core 1.0?
                    
                        asp.net-core
                                asp.net-core-mvc
                                asp.net-core-1.0
                                
                    
                    
                        oneNiceFriend
fuente
                
                fuente

Respuestas:
Debe obtener el host y la ruta por separado.
fuente
@entre las dos cadenas? ¿podrías explicarlo?@HttpContextlugar de@Context. Para vistas parciales@Contextfunciona. ¿Olvidé un uso?Url.Action("Action", null, null, Request.Url.Scheme);stackoverflow.com/questions/434604/…Necesita esquema, host, ruta y queryString
o usando la nueva función de C # 6 "Interpolación de cadenas"
fuente
Puede utilizar el método de extensión de
Request:fuente
@using Microsoft.AspNetCore.Http.Extensionsentonces@Context.Request.GetDisplayUrl()Suitable only for display. This format should not be used in HTTP headers or other HTTP operations.Basado en esto, creo que la solución de @ tmg es la mejor (quizás envuelta en su propio método de extensión).Aparentemente, esto siempre fue posible en .net core 1.0 con
Microsoft.AspNetCore.Http.Extensions, que agrega extensiónHttpRequestpara obtener la URL completa; GetEncodedUrl .por ejemplo, desde la vista de la navaja:
Desde 2.0, también tiene una ruta relativa y consulta GetEncodedPathAndQuery .
fuente
Use la propiedad AbsoluteUri de Uri, con .Net core debe construir el Uri a partir de una solicitud como esta,
por ejemplo, si la URL de la solicitud es ' http://www.contoso.com/catalog/shownew.htm?date=today ', esto devolverá la misma URL.
fuente
Puede considerar utilizar este método de extensión (del
Microsoft.AspNetCore.Http.Extensionsespacio de nombres:Para algunos de mis proyectos prefiero una solución más flexible. Hay dos métodos de extensión.
1) El primer método crea un
Uriobjeto a partir de los datos de solicitud entrantes (con algunas variantes a través de parámetros opcionales). 2) El segundo método recibe elUriobjeto y lo devuelvestringen el siguiente formato (sin barra diagonal al final): Scheme_Host_PortUso:
fuente
fuente
httpContext? Eso no va a funcionar conMicrosoft.AspNetCore.Http.HttpContext.RequestSi también está buscando obtener el número de puerto de la solicitud, deberá acceder a él a través del
Request.Hostpropiedad de AspNet Core.La
Request.Hostpropiedad no es simplemente una cadena, sino un objeto que contiene tanto el dominio de host como el número de puerto. Si el número de puerto está específicamente escrito a cabo en la URL (es decir"https://example.com:8080/path/to/resource"), a continuación, llamarRequest.Hostle dará el dominio de host y el número de puerto de esta manera:"example.com:8080".Si solo desea el valor para el dominio de host o solo desea el valor para el número de puerto, puede acceder a esas propiedades individualmente (es decir,
Request.Host.HostoRequest.Host.Port).fuente
La respuesta aceptada me ayudó, al igual que el comentario de @padigan, pero si desea incluir los parámetros de la cadena de consulta como fue mi caso, intente esto:
Y deberá agregar
@using Microsoft.AspNetCore.Http.Extensionsla vista para que el método GetEncodedPathAndQuery () esté disponible.fuente
Existe una forma limpia de obtener la URL actual de una página de Razor o una clase de PageModel. Es decir:
Tenga en cuenta que me refiero a las "ASP.NET Core Razor Pages", no al MVC.
Utilizo este método cuando quiero imprimir la metaetiqueta URL canónica en las páginas de la maquinilla de afeitar ASP.NET Core. Pero hay una trampa. Le dará la URL que se supone que es la URL correcta para esa página. Dejame explicar.
Digamos, de acuerdo con la ruta que definió para una página, su URL debería verse como
Digamos que ha definido una ruta "Id" para su página. Entonces, Url.PageLink () le dará exactamente esa URL. Si el usuario agrega algo adicional en esa URL, diga:
Entonces, no obtendrá ese "somethingElse" de este método. Y es por eso que es exactamente bueno para imprimir metaetiquetas URL canónicas en la página HTML.
fuente