保留DropDownList设置

时间:2012-11-08 19:03:38

标签: c# asp.net

我有一个网页: 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:我正在考虑调查视频状态或回发的内容,但我对这些内容不熟悉。

2 个答案:

答案 0 :(得分:1)

不是最优雅的解决方案,但您可以创建包含所选值的会话变量。

例如:

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

当您执行重定向时,在填充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

答案 1 :(得分:1)

当您致电Response.Redirect("Menu.aspx");时,您已经提出了一个新请求,而上一页不属于该请求。这就像重新调用页面一样。

您可以在进入Edit.aspx之前将值放入会话中,或者通过查询字符串将值传回

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

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