我有两页。在第一页上,用户选择一些过滤器并按搜索按钮,然后用户导航到第二页。在第二页上,用户将看到一个网格,他将在那里执行一些任务。
现在用户需要在不使用浏览器后退按钮的情况下单击一次返回到第一页。由于用户在第二页执行一些任务,这些任务会发生回发,用户无法通过单击浏览器后退按钮转到第一页。
用户还需要第一页的状态与他选择过滤器并按搜索时的状态相同。
我怎样才能做到这一点?
我有两页。在第一页上,用户选择一些过滤器并按搜索按钮,然后用户导航到第二页。在第二页上,用户将看到一个网格,他将在那里执行一些任务。
现在用户需要在不使用浏览器后退按钮的情况下单击一次返回到第一页。由于用户在第二页执行一些任务,这些任务会发生回发,用户无法通过单击浏览器后退按钮转到第一页。
用户还需要第一页的状态与他选择过滤器并按搜索时的状态相同。
我怎样才能做到这一点?
不幸的是,这没有魔术。您必须以编程方式记住返回 URL 以及返回时需要设置的任何页面状态。
为此目的,看到包含 UrlEncoded ReturnUrl 参数的查询字符串并不罕见。如果您可以设法获得恢复 URL 中状态所需的一切,那么您可以Request.QueryString["ReturnUrl"]
在完成后简单地重定向回。
如果您想避免查询字符串,您要么需要将其发布,要么将所需的数据存储在与当前请求(如会话)分开的地方以供稍后检索。
这可能会对您有所帮助,而不是完全按下后退按钮。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //check if the webpage is loaded for the first time.
{
ViewState["PreviousPage"] =
Request.UrlReferrer;//Saves the Previous page url in ViewState
}
}
protected void btnBack_Click(object sender, EventArgs e)
{
if (ViewState["PreviousPage"] != null) //Check if the ViewState
//contains Previous page URL
{
Response.Redirect(ViewState["PreviousPage"].ToString());//Redirect to
//Previous page by retrieving the PreviousPage Url from ViewState.
}
}