【问题标题】:ASP.NET MVC 5 jQuery Mobile web page shows "undefined" after session time outASP.NET MVC 5 jQuery Mobile 网页在会话超时后显示“未定义”
【发布时间】:2023-03-13 12:22:01
【问题描述】:

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

我尝试了this,但没有成功。

【问题讨论】:

  • 定义“无效”。请给我们看一些代码。
  • 我给了你链接。我正在使用接受答案作为解决方案,但它仍然显示未定义的页面,而不是带我们进入登录页面。当我按 ctrl F5 时,它会带我进入登录页面。

标签: asp.net-mvc jquery-mobile asp.net-mvc-5


【解决方案1】:

如果您将 [Authorize] 属性放在您的操作上,它应该直接转到您的登录页面,否则检查客户端上呈现的 html 链接。 再见

【讨论】:

    【解决方案2】:

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

    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());
        }
    }
    

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

    【讨论】:

    • 我已经尝试过这种方法。如果我按 Ctrl + F5,我会正确重定向到登录页面,但是如果我点击页面中的链接,我会收到页面显示“未定义”,我猜“未定义”文本即将出现,因为 jquery mobile。
    • “未定义”可能来自您的 JavaScript,例如jQuery 移动。在浏览器中打开调试工具,查看记录了哪些 JavaScript 错误。这可能会给你一个关于发生了什么的线索。
    猜你喜欢
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2011-08-12
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多