Tengo una URL como esta:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Quiero sacarme http://www.example.com/mypage.aspx
de eso.
¿Me puede decir cómo puedo conseguirlo?
Puedes usar System.Uri
Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = String.Format("{0}{1}{2}{3}", url.Scheme,
Uri.SchemeDelimiter, url.Authority, url.AbsolutePath);
O puedes usar substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
EDITAR: Modificar la primera solución para reflejar la sugerencia de brillyfresh en los comentarios.
substring
método dará error si no hay una cadena de consulta. Usar en sustring path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);
lugar.Aquí hay una solución más simple:
Prestado desde aquí: Truncar cadena de consulta y devolver URL limpia C # ASP.net
fuente
return Request.Url.GetLeftPart(UriPartial.Path);
uri.GetComponent(
Es otro método increíble para obtener partes de un Uri. ¡No sabía sobre estos dos hasta ahora!Esta es mi solución:
fuente
fuente
RawUrl
obtendrá la URL antes de que la URL se reescriba, así que ¿quizás usarlaAbsoluteUri
?Request.Url.AbsoluteUri.Split('?')[0]
Buena respuesta también encontrada aquí fuente de respuesta
fuente
Mi manera:
o
fuente
Uri.GetLeftPart
. La última versión de NET Core (1.1) debería tener ese método (no puedo confirmar porque no estoy en net core 1.1 por ahora)Puede usar
Request.Url.AbsolutePath
para obtener el nombre de la página yRequest.Url.Authority
el nombre de host y el puerto. No creo que haya una propiedad incorporada para darle exactamente lo que desea, pero puede combinarlos usted mismo.fuente
Split () Variación
Solo quiero agregar esta variación como referencia. Las URL a menudo son cadenas y, por lo tanto, es más sencillo usar el
Split()
método queUri.GetLeftPart()
. YSplit()
también se puede hacer que funcione con valores relativos, vacíos y nulos, mientras que Uri arroja una excepción. Además, las URL también pueden contener un hash como/report.pdf#page=10
(que abre el pdf en una página específica).El siguiente método se ocupa de todos estos tipos de URL:
Salida de ejemplo:
http: //domain/page.html#page=2 ---> http: //domain/page.html
page.html ---> page.html
fuente
Aquí hay un método de extensión usando la respuesta de @ Kolman. Es marginalmente más fácil recordar usar Path () que GetLeftPart. Es posible que desee cambiar el nombre de Path to GetPath, al menos hasta que agreguen propiedades de extensión a C #.
Uso:
La clase:
fuente
fuente
System.Uri.GetComponents
, solo los componentes especificados que desea.Salida:
fuente
¡Solo por nombre de URL!
fuente
Solución para Silverlight:
fuente
He creado una extensión simple, ya que algunas de las otras respuestas arrojaron excepciones nulas si no hubiera una
QueryString
para comenzar:Uso:
fuente
ejemplo simple sería usar una subcadena como:
fuente
fuente
Prueba esto:
de esto: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye obtendrá esto: mypage.aspx
fuente
fuente