有个项目需要页面根据传入的值显示对应一条记录,否则就显示所有内容!一开始我的代码如下:
string QkeyWord = Request.QueryString["KeyWord"].ToString();
if (QkeyWord!= null)
{//如果不为空就执行以下语句,可惜在上面string就已经报错了
this.AccessDataSource1.SelectCommand = "select * from seorank where K_CompanyUid='" + Session["UserName"].ToString() + "' and K_Word='" + QkeyWord + "' order by K_Date desc";
this.GvkeyWords.DataBind();
}
说是没实例化对象,或者值为null成的!报错截图以下所示:
网上搜索Object reference not set to an instance of an object.错误,结果都是说的跟这个没关系的!
不得已,自己修改代码再测试了下!
if (Request.QueryString["KeyWord"].ToString() != null)
{
//直接判断还是不行!
}
protected string QkeyWord;
protected void Page_Load(object sender, EventArgs e)
{
QkeyWord = Request.QueryString["KeyWord"];
if (QkeyWord != null)
{
//上面先定义一个字符型变量,然后取值来赋值,结果还是报错
}
}
最后还是在群里的朋友给出了解答!
string QkeyWord = Request.QueryString["KeyWord"];
if (QkeyWord != null)
{ //因为值为空,所以不能Tostring!
this.AccessDataSource1.SelectCommand = "select * from seorank where K_CompanyUid='" + Session["UserName"].ToString() + "' and K_Word='" + QkeyWord + "' order by K_Date desc";
this.GvkeyWords.DataBind();
}
最后得出一个教训,如果是页面刚开始加载就判断别的页面传入的值,应该用语句
QkeyWord = Request.QueryString["KeyWord"]
尽量不要直接用Tostring,切记切记!!
我就是在字符型的变量时都习惯性的加个Tostring()才造成这个错误!
文章出处:飞诺网(http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090313/161332.html)