2016-07-28 55 views
3

使用C#从相对URL字符串中获取特定参数的最有效方法是什么?如何从C#中的相对URL字符串获取参数?

例如,你怎么会从以下相对URL字符串得到ACTION参数的值:

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,请使用[HttpRequest上的QueryString属性](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和Substring工作。我还没有用URIBuilder尝试过。 – Wellspring

+7

第二种使用UriBuilder的解决方案不适用于相对路径。它期望构造函数参数URL有主机。 [UriBuilder帮助](https://msdn.microsoft.com/en-us/library/y868d5wh(v = vs.110).aspx) –

相关问题