2012-01-31 7 views
0

ASP.NET w/C#ASP.NET Nullexceptionエラー

5つのテキストボックスからデータを収集しています。 データが入力されたら、送信ボタンをクリックして別のフォームに表示するデータを送信し、うまくいけばデータベースに保存します。私はとNullReferenceExceptionが、これは背後にそのフォームのコードで強調表示され

ユーザーコードによって未処理だっ取得

'を提出する' クリックすると

...

if (clsDataLayer.SavePersonnel(Server.MapPath("PayrollSystem_DB.mdb"), 
    Session["FirstName"].ToString, 
    Session["LastName"].ToString, 
    Session["PayRate"].ToString, 
    Session["StartDate"].ToString, 
    Session["EndDate"].ToString())) 

任意のアイデア?私はあまり経験がありません。前もって感謝します!!

+0

あなたのセッション変数の1つはおそらくnullです。それらはどのように設定されていますか?それらがすべて正常であれば、SavePersonnelメソッドからバブリングするエラーである可能性があります – Chris

+0

探している値は実際にSessionオブジェクトに保存されていますか?セッションの代わりにRequest.Formを使用するつもりはないと確信していますか? –

+0

ジョン・サンダースは、「なぜ私はこうなっているのですか?」という行に沿った質問に答えるために、[この一般的な質問](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) NullReferenceException? "たぶん、これは正しい方向に向けるのに役立ちます。しかし、私はクリスとヨアキムに同意します。セッションに参加すると期待される値の1つが実際にはそうではないようです。 –

答えて

0

Session変数を取得する前に設定しておく必要があります。ユーザーのセッションの中で、いくつかの点で、あなたは彼らがnullでないことを確認するためにそれらを使用する前に、あなたはまた

if(Session["FirstName"] != null){} 

のように、チェックを行うことができます

Session["FirstName"] = txtFirstName.Text; 
//etc 

のように、これらのセッション変数を設定しておく必要があります.ToString()メソッドを使用する場合は、()(最後のものと同じように)をallに追加してください。

0

clsDataLayerがNULLであるか、セッション中に5つの値のいずれかが存在しません。ヌル値をテストする必要があります。

ところでToStringの後に()が見つかりません。コンパイルしても驚いています。

+0

申し訳ありません - すべてのToStringの後にtypo - ()があります。 –

+0

OK、上記の@Shredderのコメントはおそらくあなたが逃しているものです: 'Session [" FirstName "] = txtFirstName.Text;' if'文の前。 –

1

Session["Key"]オブジェクトを返します。そのオブジェクトがnullの場合は、ToString()を呼び出すとnull参照例外が生成されます。

チェックしている各フィールドが最初にヌルでないかどうかを確認する必要があります。例えば

(Session["FirstName"] != null) 
    ? Session["FirstName"] 
    : String.Empty;