【发布时间】:2009-06-27 08:30:03
【问题描述】:
标题说明了一切。
一些上下文:
我有一个搜索机制——搜索视图、搜索结果视图和一个详细信息视图(它代表一项结果,就像 webforms 中的表单视图)。我想要详细信息视图中的链接,它将用户返回到搜索结果视图。
想法:
刚刚阅读了有关 TempData 的信息,但我想这无济于事,因为用户可能会在他想要返回之前调用一些操作。
会话可能有效,但我不确定我应该如何处理它。
我不想使用 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 还是比它更聪明?
【问题讨论】:
-
您可能想解释一下您不想使用 javascript...至少我假设您不想使用?
-
实际上,我看不出 javascript 有什么帮助。即使它可以,如果它与导航相关,我对 js 持谨慎态度,因为搜索引擎不理解 js。
-
“.IsAjaxRequest() 方法是如何工作的?” - 它在请求中查找“X-Requested-With”。应该与 MSAjax 和 jQuery 一起使用。查看 ASP.NET MVC 源码 -> AjaxRequestExtension.cs
标签: asp.net-mvc session