1

私はWebページを持っています: Menu.aspx、関連性のある次のコントロールがあります:

  • いくつかの値を持つ DropDownList
  • ボタンをクリックすると、Edit.aspx というページにリダイレクトされます。

私のEdit.aspxページには、次の C# メソッドを使用してユーザーをメニュー ページにリダイレクトするキャンセル ボタンがあります。

protected void btnCancel_click(object sender, EventArgs e)
{
    Response.Redirect("Menu.aspx");
}

私がやりたいことは、ユーザーを Menu.aspx にリダイレクトするときに、ユーザーが選択した DropDownList の値を保持することです。

前もって感謝します!

編集:理想的には、QueryStringなしでこれを達成したい(可能な場合)

EDIT2:ビューステートまたはポストバックを含む何かを考えていましたが、それらに慣れていません。

4

2 に答える 2

1

これは最もエレガントなソリューションではありませんが、選択した値を含むセッション変数を作成できます。

例えば:

dropDown_SelectedIndex(object sender, EventArgs e)
{
   Session["SelectedItem"] = dropDown.SelectedValue;
}

リダイレクトを行うときは、Menu.aspxのページ読み込み時に、DropDownにデータを入力した後、このセッション変数が存在するかどうかを確認し、アイテムを選択してアプリケーションから削除します。

void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
         //populate drop down here

         if(Session["SelectedItem"] != null)
         {
              dropDown.SelectedValue = Session["SelectedItem"].ToString();
              Session["SelectedItem"] = null;
         }
   }
}

または、クエリ文字列を介して渡すこともできますが、この方法でURLを保持できます

于 2012-11-08T19:20:15.033 に答える
1

あなたが電話をしたとき、Response.Redirect("Menu.aspx");あなたはすでに前のページが含まれていなかった新しい要求をしていました。これは、ページを新たに呼び出すようなものです。

Edit.aspxにアクセスする前に値をセッションに入れるか、クエリ文字列を介して値を返すことができます

 Response.Redirect("Menu.aspx?dropdownvalue=123");

Menu.aspxで、存在するかどうかを確認?dropdownvalue=123し、選択したアイテムをその値に設定します

于 2012-11-08T19:21:04.917 に答える