ASP.NET中,若要将一个URL参数值赋值给一个变量,都得先判断参数是否存在
if (Request["Data"]!= null) { searchtext.Value = Request["Data"].ToString(); }
后来发现URL为:http://www.baidu.com
对应的DATA根本没有传递。
于是就利用 if (Request["Data"].tostring()!= null)来判断。异常依旧发生。
原理:这里的Data参数根本不存在。转换String当然异常。
所有接着 if (Request["Data"]!= null)
还有的是
http://www.baidu.com?Data=
这样的也是有异常的。它的值为一个空字符串,所以通过了Request["Data"].tostring()!= null的验证,
但将空字符串传给int.Parse方法,还是报错了,可见,光判断参数是否存在还是不够的,还必须得进一步判断是否有传值才行,最终代码改为:
复制内容到剪贴板 程序代码
int id = 0;
if (!string.IsNullOrEmpty(Request.QueryString["id"])) //String值类型。 非空。再转参。
id = int.Parse(Request.QueryString["id"]);
原因是:
1.当参数不存在时,参数值为null,调用string.IsNullOrEmpty方法,null会自动转换为空字符串;所以该方法就为FALSE了。就不执行下面的INT转换了。
2.当参数存在但不传值时,参数值为空字符串,string.IsNullOrEmpty很容易就判断出来了! 同样。