asp.net-mvc - ASP.NET MVC如何实现返回上一页的链接?

标签 asp.net-mvc session

标题已经说明了一切。

一些背景:
我有一个搜索机制 - 搜索 View 、搜索结果 View 和详细信息 View (代表一项结果,就像网络表单中的表单 View )。我想要详细信息 View 中的链接,这将使用户返回到搜索结果 View 。

想法:
只需阅读有关 TempData 的信息,但我想这不会有帮助,因为用户可能会在想要返回之前调用一些操作。

session 可能有效,但我不确定应该如何处理它。

我不想使用 JavaScript 来完成此任务。

编辑:
看来我会坚持使用 eu-ge-ne 的解决方案。结果如下:

#region usages

using System.Web.Mvc;
using CompanyName.UI.UIApp.Infrastructure.Enums;

#endregion

namespace CompanyName.UI.UIApp.Infrastructure.Filters
{
    /// <summary>
    /// Apply on action method to store URL of request in session
    /// </summary>
    public class RememberUrlAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting  
           (ActionExecutingContext filterContext)
        {
            var httpContext = filterContext.HttpContext;

            if (httpContext.Request.RequestType == "GET"
                && !httpContext.Request.IsAjaxRequest())
            {
                SessionManager
                .Save(SessionKey.PreviousUrl,
                      SessionManager.Get(SessionKey.CurrentUrl) ??
                      httpContext.Request.Url);

                SessionManager
                .Save(SessionKey.CurrentUrl,
                      httpContext.Request.Url);
            }
        }
    }
}

顺便说一句,.IsAjaxRequest() 方法是如何工作的?它只理解 MS AJAX 或者它比那更聪明?

最佳答案

我认为你需要类似这个自定义过滤器的东西(未经测试 - 目前没有 VS):

public class PrevUrlAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var httpContext = filterContext.HttpContext;
        var session = filterContext.HttpContext.Session;

        if (httpContext.Request.RequestType == "GET"
            && !httpContext.Request.IsAjaxRequest())
        {
            session["PrevUrl"] = session["CurUrl"] ?? httpContext.Request.Url;
            session["CurUrl"] = httpContext.Request.Url;
        }
    }
}

关于asp.net-mvc - ASP.NET MVC如何实现返回上一页的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1052394/

相关文章:

asp.net-mvc - ASP.Net MVC 路由未将参数传递给 Controller

java - GAE CloudEndpoints Java session

php - Yii 中的 session

java - 如何在 JSP、Java servlet 中显示当前登录的用户

java - 存储公钥和主 key 的安全方法是什么?

PHP session 在屏幕之间不持久

c# - 将模型属性的值作为 ajax 参数发送

c# - 简单的 ASP.Net MVC 1.0 验证

javascript - 如何在asp mvc中获取列表的复选框值

asp.net - 混合 WebForms/ASP.NET MVC