首页 新闻 会员 周边

有什么好的办法替换Request中的参数值

0
悬赏园豆:10 [已解决问题] 解决于 2012-10-20 15:30

比如URL是 default.aspx?id=15&kinds=4&username=%23d%8,现在点了下一个,下一个ID已经获取到,比如是18,跳转代码: Response.Redirect("default.aspx" + Request.Url.Query.ToString());除了手动遍历参数再替换的方法,还有什么比较好的方法吗?谢谢指导!

happydaily的主页 happydaily | 菜鸟二级 | 园豆:301
提问于:2012-10-18 14:46
< >
分享
最佳答案
0

可以用正则表达式来替换

Regex re = new Regex("(?<=id=).*?(?=&)", RegexOptions.None);
string result = re.Replace("default.aspx?id=15&kinds=4&username=%23d%8", "18");
收获园豆:8
快乐乔巴 | 菜鸟二级 |园豆:220 | 2012-10-18 14:57

是个好主意,如果ID在中间或末尾,这个正则怎么改?

happydaily | 园豆:301 (菜鸟二级) | 2012-10-18 15:08

@happydaily: 

那就添加个匹配文本末尾  $

(?<=id=).*?(?=&|$)

快乐乔巴 | 园豆:220 (菜鸟二级) | 2012-10-18 16:43

@快乐乔巴: 能否再帮我写一个,把这个键和值找全的,也就是我要删除这个参数和值,在首位置(前面是?)要把后一个&也找出来,怎么写

happydaily | 园豆:301 (菜鸟二级) | 2012-10-20 15:32
其他回答(1)
0

也可以手动构建参数

var nvs=Request.QueryString;
nvs["id"] = "18";
string par = string.Join("&", nvs.AllKeys.Select(s => string.Format("{0}={1}", s, nvs[s])));
Response.Redirect("default.aspx?" + par);
收获园豆:2
Qlin | 园豆:2403 (老鸟四级) | 2012-10-18 15:10

System.NotSupportedException: 集合是只读的。

支持(0) 反对(0) happydaily | 园豆:301 (菜鸟二级) | 2012-10-18 15:19

@happydaily: 

那转换一下

            var nvs = Request.QueryString;
            var dicReq = nvs.AllKeys.ToDictionary(k => k, v => nvs[v]);
            dicReq["id"] = "18";
            string par = string.Join("&", dicReq.Select(s => string.Format("{0}={1}", s.Key,s.Value)));
            Response.Redirect("default.aspx?" + par);
支持(2) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2012-10-18 15:30

@Qlin: C#有自带处理参数替换或删除的方法吗?

支持(0) 反对(0) happydaily | 园豆:301 (菜鸟二级) | 2012-10-20 08:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册