【问题标题】:What is the difference between Redirect and RedirectToAction in ASP.NET MVC?ASP.NET MVC 中的 Redirect 和 RedirectToAction 有什么区别?
【发布时间】:2012-08-30 14:14:27
【问题描述】:

Redirect 和RedirectToAction 除了返回类型之外还有什么区别? 我们什么时候使用每个?任何现实生活场景的解释都会对我有很大帮助。

我正在查看Confusion between Redirect and RedirectToAction,但在我看来,答案似乎更具体地用于处理id 参数并返回正确的视图。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

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

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

    如果您在控制器 Home 上使用参数 Id 执行操作 Index:

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

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

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

    RedirectToAction 用于在您的应用程序中执行 302 重定向,并为您提供更轻松的方式来处理您的路由表。

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

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

    【讨论】:

    • 这意味着Redirect也可以带你到完全不同的URL Vs RedirectToAction 只限于当前应用程序。如果我错了,请纠正我。
    • 很好的答案。感谢努力
    • 另一个关键区别是RedirectToAction 将 POST 表单数据发送到下一个操作。如果您发布一个名为“Name”且值为“John”的字段,并且下一个操作会查找一个名为“Name”的字段,那么您将在下一个操作中看到值“John”。您可以通过运行 TempData.Clear(); 来清除这些 POSTed 值。
    • 感谢您的简单回答。
    • 这两种重定向方式是否存在性能差异?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2021-11-10
    • 2011-01-03
    • 2011-05-06
    • 2023-03-21
    相关资源
    最近更新 更多