c#request.querystring以有效的方式添加和删除几个键值对



我们要删除查询字符串(a,b,c,d),然后添加查询字符串(z)。例如:

输入:/example.com/?a=1&b=2&c=3&d=4&e=5&f=6
输出:/example.com/?&e=5&f=6&z=6

Dictionary<string, string> dict = new Dictionary<string, string>();
    foreach (var key in Request.QueryString.AllKeys)
    {
        if (key != "a" && key != "b" && key != "c" && key != "d")
        {
            dict.Add(key, Request.QueryString[key]);
        }
    }
queryString = string.Join("&", dict.Select(x => x.Key + "=" + x.Value));
if (!string.IsNullOrEmpty(queryString ))
{
    searchViewModel.CurrQS += "&z=6";
}

我已经做到了。但是,值得将其转换为字典,然后为此串起。还有其他更好的方法吗?

Dictionary<string, string> dict = new Dictionary<string, string>();
    foreach (var key in Request.QueryString.AllKeys)
    {
        if (key != "a" && key != "b" && key != "c" && key != "d")
        {
            dict.Add(key, Request.QueryString[key]);
        }
    }
queryString = Request.RawUrl.Split(new[] {'?'})[0] +
              string.Join("&", dict.Select(x => x.Key + "=" + x.Value));
if (!string.IsNullOrEmpty(queryString ))
{
    queryString  += "&z=6";
}

简单的方法是,如果您有URL,请执行此操作:

var stringURL = Request.RawUrl.Split(new[] {'?'});
var urlwithoutQuerystring=stringURL.First();
var newUrl = urlwithoutQuerystring + "?c=abc"

或喜欢这个

var stringURL = Request.RawUrl.Split(new[] {'?'})[0];
var newUrl = strinULR + "?c=abc"

最新更新