展开全部
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还是会报错。
我们的回答不能这样对提问者不负责吧,还是你们暗箱操作了~
展开全部
你的id是datetime类型的吗,如果是你要先提取出来,比如你的id是2012-12-12。你要把id变成20121212类似这样的然后才能用conver.toint32来转,用string自带的函数来解决,"2012-12-12".split('-')[0]就是2012
追问
这个id不是自己定义的吗?与后台有关还是与源代码有关?其实我真的不是很懂!我可以加你吗?
追答
就是你的这个id的数据类型啊,如果是datetime类型的,那你的问题就出在这里了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,你的错误提示和你传的代码不匹配。错误提示是字符串转时间类型出错,而代码里面是querystring中的参数转化成int32。
其次,querystring当中的参数在使用前要先判断这个参数是否存在,即:
if(Request.QueryString["id"]!=null)
最后,获取参数后要转换成字符串并去除可能有的后置空格,如下
int id = Convert.ToInt32(Request.QueryString["id"].tostring().trim());
其次,querystring当中的参数在使用前要先判断这个参数是否存在,即:
if(Request.QueryString["id"]!=null)
最后,获取参数后要转换成字符串并去除可能有的后置空格,如下
int id = Convert.ToInt32(Request.QueryString["id"].tostring().trim());
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询