在我的Controller
我有一个帮助我检查任何Session
超时的功能,这样可以正常工作,并将用户引导至错误页面。不幸的是,从这里我真的可以选择回到主页,我想要的是创建功能,让他们回到上一页。
每个页面都会在查询字符串中附加一个ID形式(这并不总是称为ID,但它始终是识别对象的唯一编号。
我需要的是尝试获取此ID(始终是第一个参数/键)并将其用作在视图上创建ActionLink
的基础。我可以使用包含请求原始网址的RawUrl
来获取ActionExecutedContext
,但我不确定如何实现此功能。
以下是在我的Action之后执行的代码,它验证用户是否已超时并将其移至错误页面。 ErrorId为-1001只是为了确定这是一个超时。我需要的是一个ID,类似于我在RawUrl
属性中可以看到的ID,我可以将其用作RedirectToAction
的一部分,将用户带回原始页面。
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.Session != null)
{
if (filterContext.HttpContext.Session.IsNewSession)
{
string cookie = filterContext.HttpContext.Request.Headers["Cookie"];
if ((cookie != null) && (cookie.IndexOf("ASP.NET_SessionId") >= 0))
{
filterContext.Result = RedirectToAction("Error", new { errorId = -1001, errorMessage ="Your session has timed out.Please restart the application or click 'Home' below."});
return;
}
}
base.OnActionExecuted(filterContext);
}
}
答案 0 :(得分:2)
...它会将用户引导至错误页面。
将此重定向传递为查询字符串参数a ReturnUrl
时。此参数将是当前请求网址。
然后在错误页面中,您将能够使用此ReturnUrl查询字符串参数来构建指向最初请求的资源的锚点或表单。例如:
<a href="@Request["ReturnUrl"]">Go back</a>