1

我有一个网页: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");

On Menu.aspx,您将检查是否?dropdownvalue=123存在并将所选项目设置为该值

于 2012-11-08T19:21:04.917 回答