2010-01-08 83 views
0

希望我能解释一下我自己... 我在主页面有一个登录控件。当您单击登录按钮时,您将转到accountcontroller的登录方法,该方法会检查您的凭证。无论它是否正常,您都将被重定向到带有重定向动作(“home”,“index”)的主页。 但是,如果登录失败,我想向用户显示一条消息。 所以我试图在登录方法(viewdata [“logon”] =“failed”)中设置viewdata,然后在masterpage中检查此viewdata是否存在,如果是,则使用一些文本渲染span。 但据我了解,viewdata不会保留与重定向到行动方法。asp.net mvc:在2个控制器之间传递信息到视图

什么是确保我的登录方法可以以某种方式通知我的母版页视图登录失败的最佳方法是什么?

Michel

+0

关于TempData的更多信息请参阅: http://www.persistall.com/archive/2007/12/22/asp.net-mvc-a-ha-moment-tempdata--flash.aspx []'s – 2010-01-08 10:15:51

+0

看到这个项目发送FlashMessages在您的应用程序 http://maff.ailoo.net/2009/06/build-a-flashmessenger-system-in-aspnet-mvc/我想这可以帮助你! []的 – 2010-01-08 10:11:23

回答

3

如果我正确地读你的问题,你的问题是你需要在你的动作中设置一个值,在RedirectToAction之后需要使用。您需要在Tempdata中设置密钥。

TempData["MessageToUser"] = "I dont let you in dude!" 

TempData的仍然是可用的后一个重定向。

+1

是的,这是正确的。但tempdata存储在会话中,不是吗? 应用程序的其余部分没有sessionstate,我不认为我被允许引入这个sessionstate ... – Michel 2010-01-08 10:55:20

+0

是的你是对的。 – 2010-01-08 11:04:00

1

结账MvcContribQueen3某处提到他们已经治好了这个
(在重定向之间传递信息)。

但是最好为身份验证创建单独的视图。那么问题就会消失。

+0

嗯,不错。也许是一个Ajax形式,然后我没有回传和一个单独的视图。 – Michel 2010-01-08 11:57:27

+0

用于身份验证表单的AJAX也不是个好主意。 – 2010-01-08 12:20:16

+0

嗯,有道理,认为我会对succes做一个redirecttoaction,以及一个失败的返回视图(“”)。在后一种情况下,viewdata将被保存 – Michel 2010-01-08 15:36:38

相关问题