データベースにデータを送信した後、前のページにリダイレクトしたいと思います。私は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で上書きされる。
あなたは 'var currentID = Url.RequestContext.RouteData.Values [" id "]と書いてあります。 TempData ["currentId"] = currentID; 'コード –
あなたはもう少し明確な質問をすることができますか?必要に応じていくつかのコードを追加してください。 –
@マイ・ネーム - あなたの行動方法を追加してください。アクションメソッドの取得と終了に同じ名前を使用できる場合は、単にリダイレクトする必要はなく、単にView()を返すだけです。 –