-4

可能重复:
.NET 中的 NullReferenceException 是什么?

你调用的对象是空的。

protected void Page_Load(object sender, EventArgs e)
{
   int Role = Convert.ToInt32(Request.QueryString["Role"].ToString());
   try
   {
       if (Role != 3)
       {
           gv_ViewApplicants.Visible = true;
           gv_ViewApplicants_SelectedIndexChanged(this, new EventArgs());
       }
       else
       {
           gv_ViewApplicants.Visible = false;
       }
    }
    catch (NullReferenceException e1)
    { 

    }

 }
4

4 回答 4

2

尝试

int Role = Convert.ToInt32(Request.QueryString["Role"] != null ?
                           Request.QueryString["Role"].ToString() : 
                           "0");

代替

int Role = Convert.ToInt32(Request.QueryString["Role"].ToString());

如果未传递查询字符串,则需要检查 null。

于 2012-09-13T07:24:08.503 回答
1

第一件事

int Role = Convert.ToInt32(Request.QueryString["Role"].ToString());

该语句在 try 之外,因此如果它在 QueryString 为 null 时崩溃,或者即使 Convert.ToInt32 方法抛出异常,catch 块也不会被执行。

你可以试试这段代码

  int number;
  bool result = Int32.TryParse(Request.QueryString["Role"], out number);
  if (result)
  {
    // your implemntation       
  }
  else
  {        
    // your implemntation   
  } 

如果您仍然收到此错误,您甚至可以使用 Convert.ToString(Request.QueryString["Role"])。

于 2012-09-13T07:33:14.003 回答
1

代码试图访问设置为 null 的引用类型变量的成员。

请使源Request.QueryString["Role"]不为空。

于 2012-09-13T07:13:27.383 回答
0

你不应该抓住NullReferenceException

但是,问题似乎出在第一行:(try块外的唯一一行)

int Role = Convert.ToInt32(Request.QueryString["Role"].ToString()); 

要么Request为空,要么QueryString["Role"]正在返回null

共享堆栈跟踪以获得更清晰的答案。

于 2012-09-13T07:14:20.097 回答