3

URLルーティングを使用しているときにクエリ文字列に存在しない場合、以下のステートメントに対してnull例外エラーが発生するため、以下のステートメントのNullReferenceExceptionを処理するにはどうすればよいですか?

string lang = RouteData.Values["Language"].ToString();

エラーの詳細

説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:

System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

4

3 に答える 3

4

RouteDate.Values ["Language"]がnullであり、インスタンスメソッド.ToStringを適用しているため、この例外が発生します。
nullをチェックするifを追加するだけです

string lang="";
if(RouteData.Values["Language"] != null)
      lang = RouteData.Values["Language"].ToString();
于 2012-05-10T11:57:48.467 に答える
4

.NETサポートの新しいバージョン:

string lang = (RouteData.Values["Language"] ?? String.Empty).ToString();

他のデータ型にも便利です。

int langId = Convert.ToInt32(RouteData.Values["LanguageId"] ?? 0);
于 2012-10-08T22:34:30.010 に答える
1

これを試して:

string lang = RouteData.Values["Language"] != null
                   ? RouteData.Values["Language"].ToString()
                   : String.Empty;
于 2012-05-10T12:10:02.953 に答える