0

AutoPostBack が有効になっており、SelectedIndexChanged イベントが関連付けられている「サーバーのリスト」を含む ListBox があります。

    protected void lbServerList_SelectedIndexChanged(object sender, EventArgs e)
    {            
        if ( lbServerList.SelectedValue.ToString() != "")
        {
            Response.Redirect("detail.aspx?Server=" +  lbServerList.SelectedValue.ToString());
        }
    }

次に、ボタン「btnServertoAdd」(追加を実行する)で「サーバー」を追加するテキストボックスがあります

    protected void btnServertoAdd_Click(object sender, EventArgs e)
    {
        Response.Redirect("add.aspx?Server=" + tbServertoAdd.Text);
    }

シナリオ: ListBox からアイテムを選択すると、detail.aspx に移動し、サーバーの仕様が表示されます。ここで、[戻る] (ブラウザ ボタン) をクリックして TextBox に何かを入力し、[btnServerToAdd] をクリックすると、detail.aspx に移動し、add.aspx には移動しません。これを修正するにはどうすればよいですか?

さらにコードが必要な場合はお知らせください。

4

1 に答える 1

0

これは、ボタンをクリックすると、選択したサーバーも元の値(ビューステートに保存されている)とは異なるために発生します。両方のイベントが発生しますが、明らかにSelectedIndexChangedイベントが最初に発生Redirectし、残りの処理をスキップします。

イベントを2回目に発生させない方法を考えることはできないのでSelectedIndexChanged、代わりにRedirect、イベント自体に参加する代わりに、次のことを行うことができます。

  1. ページクラスに1組のboolメンバー変数があります。
  2. true各イベントハンドラーでに1を設定します。
  3. ページOnLoadCompleteイベントで、それぞれを確認し、必要に応じてリダイレクトします。
    • 両方がの場合はtrue、にリダイレクトしadd.aspxます。
    • の場合はtrue、対応するページにリダイレクトします。
    • それ以外の場合は、リダイレクトしないでください。
于 2012-09-13T15:54:20.840 に答える