如何修改类库中的HttpRequest QueryString值?

时间:2011-12-05 02:41:42

标签: c# query-string httprequest

如何在类库中修改HttpRequest QueryString值,我当前可以获取QueryString值并修改,但如何将修改后的QueryString写入HttpRequest:

public static HttpRequest ModiQueryString(HttpRequest request)
{
    var nv = new NameValueCollection(request.QueryString);
    foreach (string key in nv.Keys)
    {
        nv[key] = "abc";
    }
    //here how to let request.QueryString equal nv
    return request;
}

因为request.QueryString是只读的,所以我该怎么办? 谁可以帮助我?谢谢

如果我创建一个新的HttpRequest,我可以使用:

StringBuilder newQuery=new StringBuilder();
foreach(string key in nv.Keys)
{
    newQuery.AppendFormat("{0}={1}",key,FilterKeyWord(nv[key]));
}
HttpRequest newRequest = new HttpRequest("", request.Url, newQuery.ToString());
return newRequest;

1 个答案:

答案 0 :(得分:3)

这是不可能的,因为QueryString无法设置且类sealed无法启动。

您应该在构造请求之前修改查询字符串,或者如果您只有HttpRequest可以使用,那么保留查询字符串的临时副本(您可以编辑)并构造另一个{{ 1}}使用修改后的查询字符串。