ASP.NET MVC 5 jQuery 移动网页在会话超时后显示"undefined"



我正在开发Asp.Net MVC 5 jQuery Mobile应用程序。我面临着一个奇怪的错误。当会话过期并且用户单击任何链接时。一个新的白色页面带有文本"未定义"。如何将用户重定向到登录页面。

我试过了,但没有成功。

如果您在Action上添加了[Authorize]Attribution,它应该直接转到您的登录页面,否则请检查客户端上呈现的html链接。再见

您可以为这个场景创建一个操作过滤器。

public class SessionExpiredRedirect : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.Controller.ControllerContext.HttpContext.Session == null) // Or however you want to check for expired session.
        {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary
                {
                    { "Controller", "YourController" },
                    { "Action", "YourAction" }
                });
        }
    }
}

要使用过滤器,您可以将属性专门放置在会话过期时要重定向的操作方法上:

public class HomeController : Controller
{
    [SessionExpiredRedirect]
    public ActionResult Index()
    {
    }
}

或者在FilterConfig.cs文件中:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new SessionExpiredRedirect());
    }
}

在这种情况下,将为所有操作方法执行该属性。

最新更新