ASP.NET RedirectToAction
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 RedirectToAction 方法。此方法对于将用户重定向到 MVC 应用程序中的不同操作至关重要。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。RedirectToAction 有助于管理控制器之间的应用程序流。
基本定义
RedirectToAction 是 ASP.NET MVC 中的一种方法,它返回一个 RedirectToActionResult。此结果会执行到指定操作和控制器的 HTTP 重定向。
执行时,它会向客户端发送一个 302 Found 响应,指示浏览器向指定的操作发出新请求。这可以维护正确的应用程序流。
RedirectToAction 通常在 Post-Redirect-Get (PRG) 模式中使用,以防止重复提交表单。它有助于将操作处理与结果显示分开。
ASP.NET RedirectToAction 示例
以下示例演示了一个使用 RedirectToAction 的基本 MVC 控制器。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); var app = builder.Build(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
这设置了一个基本的 ASP.NET MVC 应用程序,并支持控制器。MapControllerRoute
方法定义了默认路由模式。
using Microsoft.AspNetCore.Mvc; public class AccountController : Controller { private static List<User> _users = new() { new User(1, "john", "john@example.com"), new User(2, "jane", "jane@example.com") }; [HttpGet] public IActionResult Login() { return View(); } [HttpPost] public IActionResult Login(string username, string password) { // Authentication logic would go here var user = _users.FirstOrDefault(u => u.Username == username); if (user == null) { TempData["ErrorMessage"] = "Invalid credentials"; return RedirectToAction("Login"); } // Successful login return RedirectToAction("Profile", new { id = user.Id }); } [HttpGet] public IActionResult Profile(int id) { var user = _users.FirstOrDefault(u => u.Id == id); if (user == null) return NotFound(); return View(user); } [HttpPost] public IActionResult UpdateProfile(int id, string email) { var user = _users.FirstOrDefault(u => u.Id == id); if (user == null) return NotFound(); // Update logic would go here return RedirectToAction("Profile", new { id = id }); } } public record User(int Id, string Username, string Email);
此控制器演示了使用 RedirectToAction 的三种不同场景。登录 POST 操作在失败时重定向回登录,在成功时重定向到个人资料。
UpdateProfile 操作展示了在处理后如何将参数重定向回同一操作。这遵循 PRG 模式以防止重复提交。
TempData
字典用于在重定向之间传递数据。这对于仅应显示一次的错误消息特别有用。
该示例展示了 RedirectToAction 如何维护干净的 URL 和正确的 HTTP 语义。每次重定向都清楚地指示了应用程序流程中的下一步。
来源
Microsoft ASP.NET MVC Actions 文档
在本文中,我们探讨了 ASP.NET 8 中的 RedirectToAction 方法。此强大功能有助于维护正确的应用程序流和 URL 语义。