2016-07-06 8 views
0

データベースにデータを送信した後、前のページにリダイレクトしたいと思います。私はTempDataを使用して現在のページでIDを検索していますが、投稿したいフォームのページに行きます(which have an ID)。メソッドが実行された後TempDataはフォームのページであるcurrent page IDによってオーバーライドされます。そのIDで初期ページにReturnRedirectしたいです。ReturnRedirectを試みるとTempDataが無効になる

ここでコード:

コントローラ私はIDを取得GETメソッドを持つ:

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がない場合に動作するためです。

ありがとうございます。

EDIT:

私はジョブズの詳細を持っている:

// 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) 

、私は詳細にReturnRedirectに他のTempDataを変数を使用したい(POSTメソッドをトリガーする)ボタンを保存し、フォームを編集して使用しますページであるが、両方のページがIDのものであるので、TempDataは、IDでないユーザのIDであるURLからの最後のIDで上書きされる。

+0

あなたは 'var currentID = Url.RequestContext.RouteData.Values [" id "]と書いてあります。 TempData ["currentId"] = currentID; 'コード –

+1

あなたはもう少し明確な質問をすることができますか?必要に応じていくつかのコードを追加してください。 –

+1

@マイ・ネーム - あなたの行動方法を追加してください。アクションメソッドの取得と終了に同じ名前を使用できる場合は、単にリダイレクトする必要はなく、単にView()を返すだけです。 –

答えて

1

TempDataはHTTPリクエストの間だけ存在することを忘れないでください。多分あなたの問題の手がかりになるかもしれません(私は確信が持てないので、私はあなたのコードでコントローラとビューの間のすべてのやりとりを見つけることができません)。

+0

あなたの答えはとても良いヒントでした。私はセッションを探し始めました。私は、私のTempDataが洗い流されることをかなり知っていましたが、私はそれを永続させようとしました。ありがとう – Eduard

関連する問題