我有一个应用程序,有时在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 ("&");
}
答案 0 :(得分:1)
Request.QueryString不是string
,而是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();