Wel*_*ing 5 c# regex asp.net parsing
使用C#从相对URL字符串获取特定参数的最有效方法是什么?
例如,如何ACTION
从以下相对URL字符串中获取参数的值:
string url = "/page/example?ACTION=data&FOO=test";
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用:
var myUri = new Uri(url, UriKind.Relative);
String action = HttpUtility.ParseQueryString(myUri.Query).Get("ACTION");
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
相对URI不支持此操作.
int idx = url.IndexOf('?');
string query = idx >= 0 ? url.Substring(idx) : "";
HttpUtility.ParseQueryString(query).Get("ACTION");
Run Code Online (Sandbox Code Playgroud)
虽然许多 URI 操作因UriKind.Relative
(无论出于何种原因)不可用,但您可以通过接受 Base URI的重载之一构建完全限定的URI
这是文档中Uri.Query
的一个示例:
Uri baseUri = new Uri ("http://www.contoso.com/");
Uri myUri = new Uri (baseUri, "catalog/shownew.htm?date=today");
Console.WriteLine(myUri.Query); // date=today
Run Code Online (Sandbox Code Playgroud)
如果您只关心路径组件,您还可以从HttpContext.Current.Request.Url
或什至创建一个模拟 URI 基础,以获取当前基础"http://localhost"
。
因此,以下任一方法还应从相对路径返回 QueryString:
var path = "catalog/shownew.htm?date=today"
var query1 = new Uri(HttpContext.Current.Request.Url, path).Query;
var query2 = new Uri(new Uri("http://localhost"), path).Query;
Run Code Online (Sandbox Code Playgroud)