ASP.Net Response.Redirect模拟后退按钮

时间:2017-04-10 18:41:23

标签: asp.net back response.redirect

我正在尝试在基于asp.net的网站上诊断某些行为。以下是场景:

用户位于第1页并执行查询,该查询使用数据和重定向到第2页的超链接填充GridView。

用户点击超链接并重定向到第2页,他们可以在其中编辑数据。在page2的底部是一个取消按钮,应该将用户带回第1页。

我想让“取消”按钮将用户返回到第1页,并填充其搜索结果。如果单击浏览器上的“后退”按钮但我无法使用response.redirect模拟此行为,则此方法有效。

我尝试了以下几种组合:

reponse.redirect(request.url.tostring())

并且每个实例似乎都引用了page2而不是page1

你有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这取决于你正在使用的.net版本。在.net Core中,Request上的标题包含您需要的信息。

Request.Headers["Referer"]

这包含查询字符串的完整URL。您可以在控制器中捕获它并将其设置为视图模型上的值(或将其填充到视图包中)。

if (Request.Headers.Keys.Contains("Referer"))
    ViewBag.Referer = HttpContext.Request.Headers["Referer"];
else
    ViewBag.Referer = "";

然后在视图中使用string.IsNullOrEmpty(ViewBag.Referer)。我出于安全原因添加了检查,为什么如果他们直接到达页面没有链接?

您也可以使用Request.Headers.TryGetValue。它有点安全,因为可能有重复的标题但是真的不应该,特别是在这里。