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 语义。