使用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不支持此操作。
答案 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