ASP.NET MVC中的Redirect和RedirectToAction有什么区别?

gma*_*ser 50 asp.net-mvc

是什么区别RedirectRedirectToAction比自己返回类型其他?我们什么时候使用?任何现实生活场景的解释都会对我有所帮助.

我在看Redirect和RedirectToAction之间的混淆,但是,对我来说,看起来答案更具体地处理id参数并返回正确的视图.

Oma*_*mar 81

RedirectToAction 允许您为应用程序中的特定操作/控制器构造重定向URL,也就是说,它将使用路由表生成正确的URL.

Redirect 要求您提供重定向到的完整URL.

如果您IndexHome带有参数的控制器执行了操作Id:

  1. 您可以使用RedirectToAction("Index", "Home", new { id = 5 })哪个将根据您的路由表为您生成URL.

  2. 您可以使用Redirect但必须自己构建URL,因此您可以传递Redirect("/Home/Index/5")或路由表工作.

  3. 您无法使用重定向到google.com(外部URL)RedirectToAction,必须使用Redirect.

RedirectToAction 用于在您的应用程序中执行302重定向,并为您提供更简单的路径表工作方式.

Redirect 用于执行302重定向到其他所有内容,特别是外部URL,但您仍然可以在应用程序中重定向,您只需自己构建URL.

最佳实践:使用RedirectToAction任何东西处理您的应用程序操作/控制器.如果您使用Redirect并提供URL,则需要在路由表更改时手动修改这些URL.

  • 很好的答案.努力的努力 (3认同)
  • 这意味着Redirect还可以带您到完全不同的URL。Vs RedirectToAction仅限于当前应用程序。如果我错了,请纠正我。 (2认同)
  • 另一个主要的区别是`RedirectToAction`将POST表单数据发送到下一个动作。如果您发布一个名为“ Name”的字段,其值为“ John”,而下一个动作将查找一个名为“ Name”的字段,则该下一个动作将看到值“ John”。您可以通过运行`TempData.Clear();`清除这些POSTed值。 (2认同)