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

时间:2009-02-19 22:00:20

标签: asp.net asp.net-mvc

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

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

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

或者在TempData中保留路线名称,只使用RedirectToRoute(TempData [“LoginRoute”]);

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

请注意,如果您没有检查是否会引用其他网站的跨网站注入。您可能希望对引用URL进行一些验证。

答案 2 :(得分:0)

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

  Return Redirect(returnUrl);

  Return RedirectToAction(returnUrl);

如果您将returnUrl参数指定为有效的actionlink。

我最近遇到过类似的问题 - 你或许可以找到here ...