我在。net中有一个字符串,实际上是一个URL。我想要一种简单的方法从特定的参数中获取值。

通常,我只使用Request。Params["theThingIWant"],但是这个字符串不是来自请求。我可以像这样创建一个新的Uri项:

Uri myUri = new Uri(TheStringUrlIWantMyValueFrom);

我可以使用myUri。查询以获取查询字符串…但显然我得找个雷克斯风的方法把它分开。

我是否遗漏了一些明显的东西,或者是否没有内置的方法来创建某种类型的正则表达式,等等?


当前回答

这其实很简单,对我来说很管用:)

        if (id == "DK")
        {
            string longurl = "selectServer.aspx?country=";
            var uriBuilder = new UriBuilder(longurl);
            var query = HttpUtility.ParseQueryString(uriBuilder.Query);
            query["country"] = "DK";

            uriBuilder.Query = query.ToString();
            longurl = uriBuilder.ToString();
        } 

其他回答

我用过,运行得很好

<%=Request.QueryString["id"] %>

使用System.Web.HttpUtility类返回NameValueCollection的静态ParseQueryString方法。

Uri myUri = new Uri("http://www.example.com?param1=good&param2=bad");
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("param1");

查看文档http://msdn.microsoft.com/en-us/library/ms150046.aspx

如果你想在默认页面上获得你的QueryString。默认页面意味着你当前页面的url。 你可以试试下面的代码:

string paramIl = HttpUtility.ParseQueryString(this.ClientQueryString).Get("city");
HttpContext.Current.Request.QueryString.Get("id");

下面是一个示例,其中提到了要包含哪些dll

var testUrl = "https://www.google.com/?q=foo";

var data = new Uri(testUrl);

// Add a reference to System.Web.dll
var args = System.Web.HttpUtility.ParseQueryString(data.Query);

args.Set("q", "my search term");

var nextUrl = $"{data.Scheme}://{data.Host}{data.LocalPath}?{args.ToString()}";