请问如何修改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是只读的。
注:代码是在类库中
omg,你修改他做什么?你想实现什么效果?
有个需求就是在某些情况下要修改用户提交的内容,但这个要做成通用的,所以就在一个类库中想实现这样的功能。
@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,就是说客户端浏览器只是想提交一个东西,你根据我提交的东西返回过来值的,你修改他何用?
@顾晓北: 谢谢你的回复,你上面说的我基本上也明白。现在用另外一种方法达到目地了
@artwl: 怎么实现的?应该分享一下啊
请问你的目的是什么!这个是客户端以Get方式提交到服务器的数据!
请问你想干嘛!呵呵
就是在某些情况下要修改用户提交的内容
你这个可以用其他的方法解决,把你目的是什么说清楚,也好处理,这样赋值肯定是不行的。
就是在某些情况下要修改用户提交的内容
如果是在类库中需要这样修改,建议这个方法只返回nv,然后在需要发送请求的地方再重新组装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;
没这样弄过,关键是原有请求中附带的session或cookie及权限验证等是不是没有了
@artwl: 显然没有了
怎么实现的,分享一下啊,最近也遇到这个问题
这个问题解决了吗