int id = Convert.ToInt32(Request.QueryString["id"]);提示出错

怎么解决啊... 怎么解决啊 展开
 我来答
stylecake
2013-06-26 · 超过66用户采纳过TA的回答
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:194万
展开全部

Convert.ToInt32()只负责把"12345"或者"5678"这样的字符串转换为整数,而"1ar3243"或者"2013-0306"这样的不符合数字规则的在转换的时候就会出现错误。

所以要加入错误捕捉

int id=-1;
try{
    id = Convert.ToInt32(Request.QueryString["id"]);
}
catch{} 
if(id > -1)
{
    //....在这里加入正常执行的代码
}
else
{
    //错误提示:比如ID错误
}
追问
我用的是C#  asp.NET,同学也一样的,他的没出错,我的出错了,敢问到底该怎么改?求求了
追答
我知道你的是asp.net , 因为传入的值不一样。
Request.QueryString["id"]代表了,浏览器网址尾巴参数。
比如: http://www.163.com/new.aspx?id=1234,这样的当然可以顺利转换。
http://www.163.com/new.aspx?id=123erg,这样的当然不可能转换,所以出错了。
建议最好还是学学基础,再一步一步深入。我以上给出的就是最好的修改方法。
====================================================================
呵呵,aspx还好些,如果是asp,网友采纳的就出现SQL注入了。
但是aspx也还是会出现错误,比如传入值是英文字母abcd,if(Request.QueryString["id"]!=null)也会进入条件选择,Convert.ToInt32还是会报错。
我们的回答不能这样对提问者不负责吧,还是你们暗箱操作了~
hbomby52
2013-06-26
知道答主
回答量:10
采纳率:0%
帮助的人:11.8万
展开全部
你的id是datetime类型的吗,如果是你要先提取出来,比如你的id是2012-12-12。你要把id变成20121212类似这样的然后才能用conver.toint32来转,用string自带的函数来解决,"2012-12-12".split('-')[0]就是2012
追问
这个id不是自己定义的吗?与后台有关还是与源代码有关?其实我真的不是很懂!我可以加你吗?
追答
就是你的这个id的数据类型啊,如果是datetime类型的,那你的问题就出在这里了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
河清鱼戏水A
2013-06-26 · TA获得超过1963个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:654万
展开全部
首先,你的错误提示和你传的代码不匹配。错误提示是字符串转时间类型出错,而代码里面是querystring中的参数转化成int32。
其次,querystring当中的参数在使用前要先判断这个参数是否存在,即:
if(Request.QueryString["id"]!=null)
最后,获取参数后要转换成字符串并去除可能有的后置空格,如下
int id = Convert.ToInt32(Request.QueryString["id"].tostring().trim());
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式