在C#中输出一个被操纵的QueryString

Ant*_*ain 23 c# asp.net collections query-string

使用以下代码我得到一个很好的格式化字符串:

Request.QueryString.ToString 
Run Code Online (Sandbox Code Playgroud)

给我一些像:&hello = worldµsoft =糟透了

但是,当我使用此代码将集合克隆到另一个对象(相同类型)时,我从ToString()方法返回Type().

System.Collections.Specialized.NameValueCollection variables = new System.Collections.Specialized.NameValueCollection(Request.QueryString);
if (!string.IsNullOrEmpty(variables["sid"]))
    variables.Remove("sid");
Response.Write(variables.ToString());
Run Code Online (Sandbox Code Playgroud)

是否有更整洁的方式输出它而不是手动查看和构建字符串?

小智 69

HttpValueCollection是内部的,但您可以使用"var"声明它而不用反射器提取它.

var query = HttpUtility.ParseQueryString(Request.Url.Query);
query["Lang"] = myLanguage; // Add or replace param
string myNewUrl = Request.Url.AbsolutePath + "?" + query;
Run Code Online (Sandbox Code Playgroud)

  • 好主意!但是`var`在这里没有为你做任何事情,那只是虚拟方法调度.`NameValueCollection values = HttpUtility.ParseQueryString(...)`也可以正常工作.我还要添加评论来解释你在做什么. (2认同)

Iga*_*nik 8

您还可以使用Reflector将HttpValueCollection类提取到您自己的类中,然后使用它.