【问题标题】:ASP.NET MVC partial views and redirectingASP.NET MVC 部分视图和重定向
【发布时间】:2009-02-19 22:00:20
【问题描述】:

我有一个名为 Login.ascx 的局部视图,其中包含我的登录框,我在整个站点的许多页面上都包含这些框。当信息正确时它工作正常,但我正在尝试进行验证,所以如果登录信息不正确,我想将用户重定向回他们之前所在的视图,以向他们显示登录错误。什么是正确的说法,回到你来自的观点?

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    如果从任何页面登录失败,我想我会将他们引导到登录视图以查看错误,而不是上一页。与另一个页面上的登录控件相比,专用登录页面可能有更多的 UI 空间来显示错误等。话虽如此,您可能希望在 Login 操作中包含 returnUrl 参数,以便在登录实际成功时,将用户引导回他们曾经(或试图到达)的地方。

    【讨论】:

      【解决方案2】:

      听起来,与其问我是怎么做到的,不如问自己为什么我要这样做。也许这是一个设计决策,而不是技术问题。

      但如果您真的要为多个登录页面设置一个控制器操作,您可以尝试...

      return Redirect(Request.UrlReferrer.ToString());
      

      或者将路由名称保留在 TempData 中,只使用 RedirectToRoute(TempData["LoginRoute"]);

      不过,这两种解决方案的代码味道都很糟糕。

      请注意,如果您不检查跨站点注入,则只会引用其他站点。您可能需要对引用 URL 进行一些验证。

      【讨论】:

        【解决方案3】:

        对于AccountController 的内置Login 方法,有一个名为returnUrl 的参数,您可以这样使用:

          Return Redirect(returnUrl);
        

          Return RedirectToAction(returnUrl);
        

        如果您将returnUrl 参数指定为有效的操作链接。

        我最近遇到了类似的问题 - 你也许能找到一些东西 here...

        【讨论】:

        • 这个问题是,如果你因为验证问题返回,returnUrl 参数就消失了。
        猜你喜欢
        • 2019-05-10
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-21
        • 2020-09-06
        相关资源
        最近更新 更多