ASP.NET MVC 我可以添加请求过滤器来跟踪上一页

本文关键字:跟踪 一页 过滤器 请求 NET MVC 我可以 添加 ASP | 更新日期: 2023-09-27 18:35:07

我有 ASP.NET MVC项目,我有一些页面(我们称之为目标页面),我可以从多个页面访问。所以我想跟踪哪个页面重定向到目标页面,以便我可以再次返回它。我对请求过滤器感到红色..我可以在我的情况下使用它吗?提前致谢:)

ASP.NET MVC 我可以添加请求过滤器来跟踪上一页

只需在查询字符串中传递返回 URL。换句话说,而不是像这样重定向:

return RedirectToAction("Destination");

做:

return RedirectToAction("Destination", new { returnUrl = Request.RawUrl });

当然,您的"目标"操作需要接受此参数:

public ActionResult Destination(Foo otherParam, string returnUrl)

然后,当您完成在"目的地"中执行的操作后,通过以下方式重定向回:

if (!String.IsNullOrWhiteSpace(returnUrl) && Url.IsLocalUrl(returnUrl))
{
    return Redirect(returnUrl);
}
return RedirectToAction("Fallback");

IsLocalUrl检查是通过确保返回的URL实际上是您网站的本地(即相对的)来防止查询字符串被篡改。

您可以使用

Request.UrlReferrer获取引用页面

否则将最后一个 URL 保存在会话变量中

喜欢

Session["returnUrl"] = Request.RawUrl;

URL 引荐来源网址仅由实际的客户端单击(锚标记、按钮)填充。

当你手动把它放在URL中时不是(这是我的JavaScript正在做的事情)。

我正在做的解决方案是在 whatever.aspx 页面上创建一个 cookie,并在我再次重定向之前从 JavaScript 中读取该 cookie。