2016-07-06 44 views
0

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

下面的代码:

控制器与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

你在哪写过'var currentID = Url.RequestContext.RouteData.Values [“id”]; TempData [“currentId”] = currentID;'代码 –

+1

你能否让你的问题更清楚一点。如果需要,添加一些代码 –

+1

@MyName - 请添加您的操作方法(获取和发布两个)签名。如果你可以使用同名的get和post操作方法,那么不需要重定向就直接返回View()。 –

回答

1

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

+0

那么你的回答是一个很好的暗示,我开始寻找Sessions,并且它做到了。我几乎搞清楚我的TempData被冲走,但我试图让它坚持下去。谢谢 – Eduard