代码之家  ›  专栏  ›  技术社区  ›  roflwaffle

ASP.NET MVC部分视图和重定向

  •  1
  • roflwaffle  · 技术社区  · 15 年前

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

    3 回复  |  直到 15 年前
        1
  •  5
  •   tvanfosson    15 年前

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

        2
  •  2
  •   Chad Moran    15 年前

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

    不过,如果您真的要为多个登录页面使用一个控制器操作,您可以尝试。。。

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

    或者将路由名称保留在TempData中,只需使用重定向路由(TempData[“LoginRoute”]);

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

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

        3
  •  0
  •   Community PPrice    7 年前

    对于内置的 Login AccountController returnUrl 您可以这样使用:

      Return Redirect(returnUrl);
    

      Return RedirectToAction(returnUrl);
    

    如果指定 参数作为有效的actionlink。

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