授权后如何重定向回创建页面

问题描述 投票:0回答:1

这应该是一个简单的修复。我有一个带有

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
页面

c# .net-core asp.net-core-mvc backend .net-8.0
1个回答
0
投票
  1. 您需要一个事件处理程序来保存输入数据。也许是 ValueChanged 或 OnSubmit
  2. 您应该将输入数据存储到本地存储中。 (会话可能会过期)
  3. 回发后,您可以从本地存储中检索数据并填写表格。
© www.soinside.com 2019 - 2024. All rights reserved.