这应该是一个简单的修复。我有一个带有
Create
页面的 ASP.NET Core 8 MVC 项目,任何用户都可以访问和使用页面上的工具,但如果不登录就无法保存他们的工作。用户管理由 Identity 处理。
目前,如果用户未登录并单击“保存”,他们将被重定向到登录页面。但是,登录后,用户将返回到
Create
页面,但未填充任何字段。此外,数据库中没有保存任何记录。
我希望当用户登录后返回到
Create
页面时,字段保持填充状态。
我没有尝试太多来解决这个问题,因为我是新手,我不知道从哪里开始。我想也许我可以将数据放入一些临时存储中,例如 tempdata。也许我还可以在登录和注册控制器中做一些事情。
提前感谢您的任何建议,如果您希望我包含我的代码,请告诉我。
编辑-------------
OP在这里。这就是我最后的结局。
假设
Obj
是我的表单数据,val
是表单中某些文本的标签,在我的[Get] Create
方法中,我有:
public IActionResult Create()
{
// if session data for val is set, get the val and create a new Obj
if (!HttpContext.Session.GetString(SessionKeyObjVal).IsNullOrEmpty())
{
Obj prepopulatedObj = new Obj()
{
val = HttpContext.Session.GetString(SessionKeyObjVal)
};
// reset session data to empty after use
HttpContext.Session.SetString(SessionKeyDescription, "");
// return view with fields populated based on session data
return View(prepopulatedObj);
}
return View();
}
在我的
[Post] Create
方法中我有:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Obj obj)
{
// if not authenticated, set session data for val and redirect to login
if (!HttpContext.User.Identity.IsAuthenticated)
{
HttpContext.Session.SetString("val", Obj.val);
return RedirectToPage("/Account/Login", new { area = "Identity" });
}
etc...
这有效!!!!但是,因为我没有在
[Authorize]
方法上使用 Post
,所以用户在登录后会被重定向到主页。如果有人有其他方法,请告诉我。我想不出任何方法来确保用户在这种特定情况下登录后被带到Create
页面