在ASP.NET Core中,可以使用TempData来在登录重定向后保留POST数据。以下是一个示例解决方法:
[HttpPost]
public IActionResult Login(LoginViewModel model)
{
// 验证用户凭据并进行登录逻辑
// ...
// 将POST数据存储在TempData中
TempData["postData"] = model;
// 登录成功后重定向到受保护的页面
return RedirectToAction("ProtectedPage");
}
[Authorize]
public IActionResult ProtectedPage()
{
// 检查TempData是否包含POST数据
if (TempData.ContainsKey("postData"))
{
// 从TempData中获取POST数据
var postData = TempData["postData"] as LoginViewModel;
// 将POST数据传递给视图模型
var viewModel = new ProtectedPageViewModel
{
PostData = postData
};
// 清除TempData中的POST数据
TempData.Remove("postData");
// 返回受保护的页面视图
return View(viewModel);
}
// 如果没有POST数据,则正常返回受保护的页面视图
return View();
}
@model ProtectedPageViewModel
@if (Model.PostData != null)
{
您之前提交的数据:
用户名: @Model.PostData.Username
密码: @Model.PostData.Password
}
通过使用TempData,可以在登录重定向后保留POST数据,并在受保护的页面中使用它。请注意,TempData只能存储一次重定向期间的数据,所以在受保护的页面中使用后会被清除。