У меня есть такой URL:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Я хочу получить http://www.example.com/mypage.aspx
от этого.
Можете ли вы сказать мне, как я могу получить это?
Ты можешь использовать 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);
Или вы можете использовать substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
РЕДАКТИРОВАТЬ: изменение первого решения, чтобы отразить предложение brillyfresh в комментариях.
substring
Метод даст ошибку , если нет строки запроса. Используйтеstring path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);
вместо этого.Вот более простое решение:
Заимствовано здесь: усечение строки запроса и возврат чистого URL C # ASP.net
источник
return Request.Url.GetLeftPart(UriPartial.Path);
uri.GetComponent(
еще один замечательный метод получения частей Uri. Я не знал об этих двоих до сих пор!Это мое решение:
источник
источник
RawUrl
URL- адрес будет получен до того, как URL будет перезаписан, так что, возможно, используйтеAbsoluteUri
?Request.Url.AbsoluteUri.Split('?')[0]
Хороший ответ также нашел здесь источник ответа
источник
Мой путь:
или
источник
Uri.GetLeftPart
. Последняя версия NET Core (1.1) должна иметь этот метод (не могу подтвердить, потому что я сейчас не в сетевом ядре 1.1)Вы можете использовать,
Request.Url.AbsolutePath
чтобы получить имя страницы, аRequest.Url.Authority
также имя хоста и порт. Я не верю, что есть встроенная собственность, чтобы дать вам именно то, что вы хотите, но вы можете объединить их самостоятельно.источник
Разбить () Вариация
Я просто хочу добавить этот вариант для справки. URL-адреса часто являются строками, поэтому использовать
Split()
метод проще, чемUri.GetLeftPart()
. ИSplit()
также может работать с относительными, пустыми и нулевыми значениями, тогда как Uri выдает исключение. Кроме того, URL-адреса могут также содержать хэш, например/report.pdf#page=10
(который открывает PDF на определенной странице).Следующий метод имеет дело со всеми этими типами URL:
Пример вывода:
http: //domain/page.html#page=2 ---> http: //domain/page.html
page.html ---> page.html
источник
Вот метод расширения, использующий ответ @ Kolman. Немного легче запомнить использование Path (), чем GetLeftPart. Возможно, вы захотите переименовать Path в GetPath, по крайней мере, пока они не добавят свойства расширения в C #.
Использование:
Класс:
источник
источник
System.Uri.GetComponents
Только что указанные компоненты, которые вы хотите.Вывод:
источник
Только для названия URL!
источник
Решение для Silverlight:
источник
Я создал простое расширение, так как некоторые другие ответы выдавали нулевые исключения, если не было
QueryString
с чего начать:Использование:
источник
простой пример будет использовать подстроку как:
источник
источник
Попробуй это:
из этого: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye вы получите это: mypage.aspx
источник
источник