0

セッション変数で何が起こっているのかを把握するために、デバッグ コードを少し追加しましたが、常に空のように見えます。

誰かが私が間違っていることを教えてもらえますか?

私はあまり Web 開発をしていないので、これはおそらく初歩的なミスです。

private const string PASSWORD = "PASSWORD";

protected void Page_Load(object sender, EventArgs e) {
  if (String.IsNullOrEmpty(password)) {
    lblMessage.Text = !IsPostBack ? "Not a PostBack!" : "A PostBack.";
  } else {
    ShowData(IsPostBack);
  }
}

private string password {
  get { return Session[PASSWORD] as string; }
  set { Session[PASSWORD] = value; }
}

protected void Password_Click(object sender, EventArgs e) {
  string val = txtPassword.Text.Trim();
  if (val == ConfigurationManager.ConnectionStrings[PASSWORD].ConnectionString) {
    password = val;
    txtPassword.Text = null;
  } else {
    Response.Redirect(val);
  }
}

private void ShowData(bool postType) {
  // I would display my data here if it ever got to this point!
}

編集:イベントが発生するPassword_Clickと、「PostBack ではありません!」というメッセージしか表示されません。または「ポストバック」。したがって、私のセッション変数は設定されていてはなりません。

4

3 に答える 3

1

特にセッションステートを無効にしていない限り (無効にしたとは思いません)、コードは問題ないように見えます。

私が考えることができる唯一のことは、あなたのメソッドPassword_Clickが呼び出されないということです.

そこにブレークポイントを置いて、変数が実際に設定されるかどうかを確認してください。そうでない場合は、ASP.NET マークアップを表示して、イベントが発生しない理由を確認します。

于 2013-05-10T13:51:00.827 に答える
1

コードを見ると、この動作を作成できる唯一の「問題」は次の行です。

Response.Redirect(val);

そうでなければ、あなたのコードは私には正しいように見えるので、あなたはリダイレクトを受けていると思います。

于 2013-05-09T22:05:11.337 に答える