首页新闻找找看学习计划

请问如何修改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 | 专家六级 | 园豆:16526
提问于:2011-12-05 10:21
< >
分享
最佳答案
0

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

收获园豆:20
顾晓北 | 大侠五级 |园豆:9534 | 2011-12-05 11:40

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

artwl | 园豆:16526 (专家六级) | 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,就是说客户端浏览器只是想提交一个东西,你根据我提交的东西返回过来值的,你修改他何用?

顾晓北 | 园豆:9534 (大侠五级) | 2011-12-05 13:42

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

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

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

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

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

请问你想干嘛!呵呵

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

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

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

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

再见2019 | 园豆:11645 (专家六级) | 2011-12-05 10:53

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

支持(0) 反对(0) artwl | 园豆:16526 (专家六级) | 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 | 园豆:16526 (专家六级) | 2011-12-05 11:31

@artwl: 显然没有了

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

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

领悟.海洋 | 园豆:210 (菜鸟二级) | 2018-06-15 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册