【发布时间】:2011-02-10 05:57:55
【问题描述】:
我对 MVC 还很陌生,但不确定哪个重定向...替换 WebForms 中使用的标准重定向是标准 Response.Redirect()
例如,我需要在几个场景中重定向到其他页面:
- 当用户注销时(Forms signout in Action)我想重定向到登录页面。
- 在控制器或基本控制器事件中,例如
Initialize,我想重定向到另一个页面(AbsoluteRootUrl+Controller+Action)
似乎在某些情况下调用了多个重定向会导致错误,这与页面已经被重定向的事实有关吗?如何取消当前请求并重定向?
更新:
这个问题的答案(System.Web.Mvc.Controller Initialize)表示不应该使用Initialize,应该使用OnActionExecuting?
关于为什么不应使用 Initialize 或为什么 OnAuthorization 不是更好的选择的任何 cmets?
更多信息:
这篇博文 (http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/) 表明 OnActionExecuting 对身份验证很有用(如上面的链接所示)我想将其添加到基本 Controller 类中的该事件中很好,因为每个页面都在 MVC 中运行一个 Action所以不应该有太大的区别,并且具有重定向的能力应该更容易。这确实是有道理的,但对我来说似乎也有道理,事情可以在这个事件之前的一个事件中完成,并让我们质疑这些事件是为了什么?将给予OnActionExecuting 一个机会..
【问题讨论】:
-
你提到的这个基本控制器初始化事件是什么?
-
@Mahesh Velaga:我有覆盖初始化事件的基本控制器,即受保护的覆盖 void Initialize(System.Web.Routing.RequestContext requestContext)...我有一些安全检查,需要重定向基于这些检查的用户
-
为什么不在 tempdata 或 viewdata 中设置一些值,当您根据可以使用 RedirectToAction 重定向的值到达控制器操作时?
-
我希望在基类中有这个,而不必在每个控制器的每个操作中实现重定向...
标签: c# asp.net-mvc redirect