如何在C#中更新查询字符串?

dev*_*747 45 c# asp.net query-string

在网址的某处有一个&sortBy = 6.如何在单击按钮时将其更新为&sortBy = 4或&sortBy = 2?我是否需要编写自定义字符串函数来创建正确的重定向网址?

如果我只需要附加一个查询字符串变量,我会这样做

string completeUrl = HttpContext.Current.Request.Url.AbsoluteUri + "&" + ...
Response.Redirect(completeUrl);
Run Code Online (Sandbox Code Playgroud)

但我想要做的是修改现有的querystring变量.

Ahm*_*eed 119

要修改现有的QueryString值,请使用以下方法:

var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
nameValues.Set("sortBy", "4");
string url = Request.Url.AbsolutePath;
Response.Redirect(url + "?" + nameValues); // ToString() is called implicitly
Run Code Online (Sandbox Code Playgroud)

我在另一个回复中详细介绍.


m.o*_*man 7

检索sortby的查询字符串,然后在完整的Url上执行字符串替换,如下所示:

string sUrl = *retrieve the required complete url*
string sCurrentValue = Request.QueryString["sortby"];
sUrl = sUrl.Replace("&sortby=" + sCurrentValue, "&sortby=" + newvalue);
Run Code Online (Sandbox Code Playgroud)

让我知道事情的后续 :)

祝好运


Mat*_*all 6

    private void UpdateQueryString(string queryString, string value)
    {
        PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
        isreadonly.SetValue(this.Request.QueryString, false, null);
        this.Request.QueryString.Set(queryString, value);
        isreadonly.SetValue(this.Request.QueryString, true, null);
    }
Run Code Online (Sandbox Code Playgroud)