我有一个网页: Menu.aspx ,其中我有以下相关控件:
在我的 Edit.aspx 页面中,我有一个取消按钮,使用以下C#方法将用户重定向回菜单页面
protected void btnCancel_click(object sender, EventArgs e)
{
Response.Redirect("Menu.aspx");
}
我想要做的是当我将用户重定向回Menu.aspx时,保留他们选择的DropDownList的值。
提前致谢!
编辑:理想情况下,我希望在没有QueryString(如果可能)的情况下实现此目的
EDIT2:我正在考虑调查视频状态或回发的内容,但我对这些内容不熟悉。
答案 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
是否存在,并将所选项目设置为该值