添加&到C#中的URL查询字符串

时间:2016-01-15 19:44:13

标签: c# asp.net string parameters

我有一个应用程序,有时在URL中有一个查询字符串,有时则没有,具体取决于用户。

因此,通常网址为www.website.com/application/main-page。但是,在这个主页面上,我通过在查询字符串中添加参数来保留选项卡,如下所示:main-page?defaultTab=1。这非常有效。但是,如果URL已经有参数,那就不是了。

如果网址已有参数,例如main-page?customerID=1,则不会保留标签,因为?defaultTab=1未正确附加到网址。我需要它使用正确的main-page?customerID=1&defaultTab=1语法附加到URL。

如何查看查询字符串是否为空?然后,如果不为null,则添加&而不是 ?。 ?

我已尝试过这方面的变体,但无法让它发挥作用:

if (!string.IsNullOrEmpty(Request.QueryString["customerID"]))
{
     Request.QueryString.Add ("&");
}

3 个答案:

答案 0 :(得分:1)

Request.QueryString不是string,而是NameValueCollection,它是一种引用类型。

NameValueCollection

  

表示关联的String键和String值的集合   可以使用密钥或索引访问。

Request.QueryString属性是自动填充的,因此您只需向其添加元素,而无需考虑它有多少密钥。

Request.QueryString["customerID"] = "1";
Request.QueryString["defaultTab"] = "1";

这将自动生成您需要的请求字符串。

答案 1 :(得分:0)

您可以使用Set() querystring方法完全设置新的键/值对。喜欢

        System.Collections.Specialized.NameValueCollection QS = HttpUtility.ParseQueryString(Request.QueryString.ToString());
        QS.Set("defaultTab", "1");
        string updatedQueryString = "?" + QS.ToString();

答案 2 :(得分:0)

为什么不使用HttpUtility.ParseQueryString

string initialUrl = "www.yourwebsite.com";
var uriBuilder = new UriBuilder(longurl);
Request.QueryString["customerID"] = "yourValue";
var query = HttpUtility.ParseQueryString(Request.QueryString);
uriBuilder.Query = query.ToString();
yourUrl = uriBuilder.ToString();