我想在数据库中提交一些数据后重定向到上一页。我使用+1
在当前页面上检索TempData
,然后我会在页面上找到我要提交的表单(ID
),但在which have an ID
之后方法被触发POST
被TempData
覆盖,current 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);
}
但是从这个页面我想要一个链接到我编辑当前用户数据的页面。
查看详细信息页面代码:
@Html.ActionLink("Edit Company Details", "Edit", "UserAdmin", new { id = TempData["userID"] }, null)
现在我正在编辑用户页面,我编辑表单并使用保存按钮(触发POST方法)我想在详细信息页面上使用其他TempData变量ReturnRedirect
,但由于这两个页面都有ID ,TempData被来自URL的最后一个ID覆盖,该ID是用户的ID而不是ID。
答案 0 :(得分:1)
不要忘记TempData仅在HTTP请求期间存在。也许这是你的问题的线索(我无法在你的代码中找到控制器和视图之间的所有交互,所以我无法确定)。