2009-02-19 99 views
1

我有一个名为Login.ascx的局部视图,它包含我在整个站点的多个页面上包含的登录框。它的工作正常,当信息是正确的,但我想做验证,所以如果登录信息不正确,我想重定向到他们在之前的视图,以显示他们的登录错误。什么是正确的说法,回到你来自的视角?ASP.NET MVC局部视图和重定向

回答

2

听起来好像不是问我如何做到这一点,你应该问自己为什么我这样做。也许这是一个设计决定,而不是技术问题。

但如果你真的要对多个登录页面,你可以尝试一个控制器动作......

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

或者在TempData的保持路由名称,只是用RedirectToRoute(TempData的[“LoginRoute “]);

尽管这两种解决方案都有不好的代码味道。

请注意,如果您没有检查即将引用其他网站的跨网站注入。您可能需要对推荐网址进行一些验证。

0

AccountController的内置Login方法有一个名为returnUrl参数,你可以使用像这样:如果指定returnUrl参数作为

Return Redirect(returnUrl); 

Return RedirectToAction(returnUrl); 

有效的actionlink。

最近,我有类似的问题 - 你也许能找到一些here ...

+0

问题在于,如果由于验证问题而返回,则returnUrl参数已消失。 – 2009-02-19 22:13:28

5

如果登录任何网页失败,我想我会引导他们到了错误,而不是以前的登录视图页。专用登录页面可能会有更多UI空间来显示错误等,而不是另一页面上的登录控件。话虽如此,您可能需要在Login操作中包含一个returnUrl参数,以便当登录成功时,用户将被引导回它们(或正在尝试访问的位置)。