当我尝试 ReturnRedirect 时,TempData 被覆盖

TempData gets overrided when I try to ReturnRedirect

我想在数据库中提交一些数据后重定向到上一页。我正在使用 TempData 在当前页面上检索 ID,然后我将使用我要提交的表单 (which have an ID) 进入该页面,但在 POST 之后方法被触发 TempDatacurrent page ID 覆盖,这是带有表单的页面,我想 ReturnRedirect 到带有其 ID 的初始页面。

这里是代码:

使用 GET 方法检索 ID 的控制器:

var currentID = Url.RequestContext.RouteData.Values["id"];          
TempData["currentId"] = currentID;

使用 POST 方法的控制器,我尝试重定向:

if (ModelState.IsValid)
{
    // Editing records in database
    ....
    return RedirectToAction("Details", "Jobs", 
        new { controller = "JobsController", action = "Details", id = TempData["currentId"] });
}
ModelState.AddModelError("", "Something failed");
return View();

我正在使用这种方法,因为如果使用 POST 方法的当前操作没有 ID,它就可以工作。

感谢您的任何建议。

编辑:

我有工作详情:

    // GET: Jobs/Details/5
    public ActionResult Details(Guid id)
    {
        var currentID = Url.RequestContext.RouteData.Values["id"];          
        TempData["currentId"] = currentID;

        var currentUserTemp = LoggedUserId;
        TempData["userID"] = currentUserTemp;

        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Job job = db.Jobs.Find(id);
        if (job == null)
        {
            return HttpNotFound();
        }

        return View(job);
    }

但是我想从这个页面 link 到我编辑当前用户数据的页面。

查看详情页面代码:

@Html.ActionLink("Edit Company Details", "Edit", "UserAdmin", new { id = TempData["userID"] }, null)

现在我正在编辑用户页面,我编辑表单并使用保存按钮(触发 POST 方法)我想在详细信息页面上使用另一个 TempData 变量 ReturnRedirect 但是因为两个页面都有 ID,TempData 被 URL 中的最后一个 ID 覆盖,这是用户的 ID 而不是 ID。

不要忘记 TempData 仅在 HTTP 请求期间存在。也许这是你问题的线索(我在你的代码中找不到控制器和视图之间的所有交互,所以我不能确定)。