如何从C#中的相对URL字符串中获取参数?

时间:2016-07-28 19:30:18

标签: c# asp.net regex parsing

使用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");

但是,我收到以下错误:

  

相对URI不支持此操作。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

尽管UriKind.Relative无法使用许多URI操作(出于某种原因),但是您可以通过采用基本URI的overloads之一来构建完全合格的URI

下面是一个示例from the docs on Uri.Query

Comment

如果您只关心路径组件,您还可以从HttpContext.Current.Request.Url获取当前库,甚至可以使用django_comments.models.Comment创建一个模拟URI库。

因此,以下两种方法之一也都应从相对路径返回QueryString:

comment