0

コードの何が問題になっていますか? 最近、コード ビハインドの計算に関する質問を投稿し、Vinoth の回答を試しましたが、次の行でエラーが発生します。

bool isChaffeurUsed = (bool)Session["IsChaffeurUsed"];

エラー メッセージ:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

どうすればいいのか教えてください。どうぞよろしくお願いいたします。良い一日を。

4

7 に答える 7

4
Session["IsChaffeurUsed"]

定義されていません - キーでセッション変数を設定していませんIsChaffeurUsed

最初に設定されているかどうかを確認する必要があります。

bool isChaffeurUsed;

if(Session["IsChaffeurUsed"] != null)
    isChaffeurUsed = (bool)Session["IsChaffeurUsed"];
于 2012-08-01T13:50:23.217 に答える
3

最初にオブジェクトを確認する必要があります。試してください:

var isChaffeurUsed = false;

if (Session["IsChaffeurUsed"] != null)
{
    isChaffeurUsed  = bool.Parse(Session["isChaffeurUsed"].ToString());
}
于 2012-08-01T13:50:23.137 に答える
3

Session["IsChaffeurUsed"]エラーは、それが存在しないことを伝えようとしています。

デフォルト値がわかっている場合は、ステートメントを次のように変更できます。

bool isChaffeurUsed = (bool)(Session["IsChaffeurUsed"] ?? false)

または、null 値を許可する場合 (値が具体的にどの値にも設定されていないことを示します)、null 許容型を使用できます。

bool? isChaffeurUsed = (bool?)Session["IsChaffeurUsed"];
于 2012-08-01T13:50:38.503 に答える
1

Sessionがnullの場合、またはIsChaffeurUsedがSessionで見つからなかった場合は、その例外が発生します。セッションはおそらくnullではないため、IsChaffeurUsedが見つからないという問題が発生している可能性があります。

IsChaffeurUsedが設定されていない場合の対処方法を決定する必要があります。たとえば、それが誤りであると想定できます。

bool isChaffeurUsed = Session["IsChaffeurUsed"] == null ? false 
     : (bool)Session["IsChaffeurUsed"];
于 2012-08-01T13:52:50.313 に答える
1

Sessionほとんどの場合、名前には何もありません"IsChaffeurUsed"

于 2012-08-01T13:50:40.200 に答える
0

TryParse() メソッドが存在する理由は次のとおりです。

bool.TryParse(Session["IsChaffeurUsed"], out isChaffeurUsed)
于 2012-08-01T13:55:07.723 に答える
0

セッション変数を見ることについての1つのことは、最初の読み取り後に変数がなくなる可能性があるということです(これは私に何度か起こりました)。これは通常、ASP アプリでセッション/キャッシュ変数を参照するときに使用するパターンです。

object o = null;
if((o = Session["IsChaffeurUsed"]) != null)
{
    // Do something with o: bool.Parse, (bool), etc...
}
于 2012-08-01T13:58:46.470 に答える