2016-07-06 42 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