2016-07-28 9 views
3

Каков наиболее эффективный способ получить определенный параметр из относительной строки URL с помощью C#?Как получить параметр из относительной строки URL в C#?

Например, как бы вы получить значение параметра ACTION из следующего относительного URL строки:

string url = "/page/example?ACTION=data&FOO=test"; 

Я уже попытался с помощью:

var myUri = new Uri(url, UriKind.Relative); 
String action = HttpUtility.ParseQueryString(myUri.Query).Get("ACTION"); 

Однако, я получаю следующее ошибка:

This operation is not supported for a relative URI.

+0

Вы пробовали Request.QueryString ["ACTION"]? – Kami

+0

Если вы используете asp.net, используйте свойство [QueryString на HttpRequest] (https://msdn.microsoft.com/en-us/library/system.web.httprequest.querystring (v = vs.110). ASPX). –

+0

строка URL-адреса поступает из базы данных, а не из браузера, поэтому я не думаю, что использование HttpRequest будет работать? – Wellspring

ответ

4
int idx = url.IndexOf('?'); 
string query = idx >= 0 ? url.Substring(idx) : ""; 
HttpUtility.ParseQueryString(query).Get("ACTION"); 
+0

Спасибо, используя обработанную IndexOf и подстроку. Я еще не пробовал это с URIBuilder. – Wellspring

+7

Второе решение для использования UriBuilder НЕ работает для относительных путей. Он ожидает, что URL-адрес параметра конструктора будет содержать хост. [Справка UriBuilder] (https://msdn.microsoft.com/en-us/library/y868d5wh (v = vs.110) .aspx) –