2016-07-28 6 views
3

Was ist der effizienteste Weg, um einen bestimmten Parameter aus einer relativen URL-Zeichenfolge mit C# zu erhalten?Wie erhalten Sie den Parameter von einer relativen URL-Zeichenfolge in C#?

Zum Beispiel, wie würden Sie den Wert des ACTION Parameter aus der folgenden relativen URL-Zeichenfolge erhalten:

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

ich bereits versucht haben, mit:

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

Allerdings bekomme ich die folgende Fehler:

This operation is not supported for a relative URI.

+0

Haben Sie Request.QueryString ["ACTION"] ausprobiert? – Kami

+0

Wenn Sie asp.net verwenden, verwenden Sie die [QueryString-Eigenschaft auf HttpRequest] (https://msdn.microsoft.com/en-us/library/system.web.httprequest.querystring (v = vs.110). aspx). –

+0

die URL-Zeichenfolge stammt aus einer Datenbank, nicht aus dem Browser, also glaube ich nicht mit HttpRequest funktionieren würde? – Wellspring

Antwort

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

Danke, mit dem IndexOf und Substring gearbeitet. Ich habe es noch nicht mit URIBuilder ausprobiert. – Wellspring

+7

Die zweite Lösung zur Verwendung von UriBuilder funktioniert NICHT für relative Pfade. Er erwartet, dass die Konstruktorparameter-URL einen Host hat. [UriBuilder Hilfe] (https://msdn.microsoft.com/en-us/library/y868d5wh (v = vs.110) .aspx) –