我想从网址****.aspx?cat=1+2+3+4+5中获得这些数字组成的list.
由QueryString获得cat的值后,再由
var catList = new List<int>();
string cat = null;
if (!string.IsNullOrEmpty(Request.QueryString.Get("cat"))) { cat = Request.QueryString.Get("cat"); string[] str = cat.Split('+'); for (int i = 0; i < str.Length; i++) { if (str[i] != null) { int a = Convert.ToInt32(str[i]); catList.Add(a); } } }
却在int a = Convert.ToInt32(cats[i]);时提示“System.FormatException: 输入字符串的格式不正确。”
我检查了不是空值,用其他方法读出了的确是数字值。foreach方法也试过了。
请问是什么地方出问题了呢?
你这个split是你自己写的么?framework提供的split对于char都是需要接受数组
你可以尝试使用Split的重载传入StringSplitOptions.RemoveEmptyEntries试试,或者你可以在转换那行加个try catch,在catch时看看str[i]是多少
建议在做这种转换时使用int#TryParse这种
用的就是vs自带的Split啊,断点了一下,发现有两个问题:
1. cat在请求request时就将+转换成了空格。
2. 将Split中参数改为空格后Split也没有起到分割的作用,str[i]的值就是“1 2 3 4 5”
@Destiny130: 你试下在给cat赋值前做一下urlencode
@Daniel Cai: 在其他站提问,有人让我这样做了。encode然后decode后分割了。
str[i] 的值就是一个数字2,但还是提示“输入字符串的格式不正确”。
我的解决方法是放弃从url传递值,在App_Code文件夹里添加了一个静态List<int>字段读写值