-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

コードは、nullに設定されている参照型変数のメンバーにアクセスしようとしています。

ソースRequest.QueryString["Role"]がnullでないようにしてください。

于 2012-09-13T07:13:27.383 に答える
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 に答える
0

あなたは決して捕まえるべきではありませんNullReferenceException

ただし、問題は最初の行にあるようです:(tryブロックの外側の唯一の行)

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

Requestnullであるか、QueryString["Role"]を返してnullいます。

より明確な答えを得るためにスタックトレースを共有してください。

于 2012-09-13T07:14:20.097 に答える