首页 新闻 会员 周边 捐助

请问如何修改HttpRequest的QueryString值

0
悬赏园豆:30 [已解决问题] 解决于 2011-12-05 16:09

请问如何修改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";
}
//这里怎么把nv赋值给request.QueryString
return request;
}

代码中注释的那一行如何把修改后的QueryString赋值给request.QueryString呢,request.QueryString是只读的。

注:代码是在类库中

artwl的主页 artwl | 专家六级 | 园豆:16736
提问于:2011-12-05 10:21
< >
分享
最佳答案
0

omg,你修改他做什么?你想实现什么效果?

收获园豆:20
顾晓北 | 专家六级 |园豆:10898 | 2011-12-05 11:40

有个需求就是在某些情况下要修改用户提交的内容,但这个要做成通用的,所以就在一个类库中想实现这样的功能。

artwl | 园豆:16736 (专家六级) | 2011-12-05 11:42

@artwl: querystring是用户通过get提交的东西,一般情况是通过地址栏,比如说你请求

http://www.abc.com/query.aspx?key=name

那么这个key和name就是querystring的一个键值对,这个时候比如说你想把用户提交过来的name改成username,那么就是跳转到了http://www.abc.com/query.aspx?key=usernmae

就是一个新地址了,看Google应该是你说的这种需求,你用Google搜索两个词,中间用空格分割的时候,Google实际上是跳转到了  查询结果页?key=string1+string2。。。

但是现在有ajax,不用地址栏变更,用js提交到某个页面,你的页面只是管返回结果的,这个时候你想做到什么效果呢?

再多说一句,既然是get,就是说客户端浏览器只是想提交一个东西,你根据我提交的东西返回过来值的,你修改他何用?

顾晓北 | 园豆:10898 (专家六级) | 2011-12-05 13:42

@顾晓北: 谢谢你的回复,你上面说的我基本上也明白。现在用另外一种方法达到目地了

artwl | 园豆:16736 (专家六级) | 2011-12-05 16:08

@artwl: 怎么实现的?应该分享一下啊

麒麟.NET | 园豆:3614 (老鸟四级) | 2011-12-05 16:54
其他回答(5)
0

请问你的目的是什么!这个是客户端以Get方式提交到服务器的数据!

请问你想干嘛!呵呵

JasNature | 园豆:451 (菜鸟二级) | 2011-12-05 10:33

就是在某些情况下要修改用户提交的内容

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-12-05 11:20
0

你这个可以用其他的方法解决,把你目的是什么说清楚,也好处理,这样赋值肯定是不行的。

悟行 | 园豆:12559 (专家六级) | 2011-12-05 10:53

就是在某些情况下要修改用户提交的内容

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-12-05 11:20
0

如果是在类库中需要这样修改,建议这个方法只返回nv,然后在需要发送请求的地方再重新组装QueryString。

收获园豆:10
麒麟.NET | 园豆:3614 (老鸟四级) | 2011-12-05 11:22

我如果重新创建一个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;

没这样弄过,关键是原有请求中附带的session或cookie及权限验证等是不是没有了

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-12-05 11:31

@artwl: 显然没有了

支持(0) 反对(0) 麒麟.NET | 园豆:3614 (老鸟四级) | 2011-12-05 12:33
0

怎么实现的,分享一下啊,最近也遇到这个问题

领悟.海洋 | 园豆:210 (菜鸟二级) | 2018-06-15 10:13
0

这个问题解决了吗

SpeakHero | 园豆:31 (初学一级) | 2021-05-03 14:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册