2016-07-06 4 views
0

Я хочу перенаправить на предыдущую страницу после отправки некоторых данных в базу данных. Я использую TempData для извлечения ID на текущей странице, затем я перехожу на страницу с формой, которую я хочу отправить (which have an ID), но после того, как был уволен метод POSTTempData получает переоцененный current page ID, который является страницей с формой и Я хочу, чтобы ReturnRedirect на начальную страницу с ее ID.TempData получает переопределение при попытке ReturnRedirect

Вот код:

контроллер с методом 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 не имеет идентификатора.

Благодарим за любые предложения.

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) 

Теперь я на редактирование пользователя Page, отредактировать форму и использовать кнопку сохранения (который вызывает метод POST) Я хочу использовать другую переменную TempData в ReturnRedirect на детали Страница, но поскольку обе страницы имеют идентификаторы, TempData получает переопределение с последним идентификатором из URL-адреса, который является идентификатором идентификатора пользователя.

+0

где вы писали 'var currentID = Url.RequestContext.RouteData.Values ​​[" id "]; TempData ["currentId"] = currentID; 'code –

+1

вы можете задать вам вопрос более понятным. При необходимости добавьте код –

+1

@MyName - добавьте свой метод действия (получите и опубликуйте обе). Если вы можете использовать одно и то же имя для метода get и post action, то нет необходимости перенаправлять просто return View(). –

ответ

1

Не забывайте, что TempData существует только во время HTTP-запроса. Возможно, это ключ к вашей проблеме (я не могу найти все взаимодействия между контроллерами и представлениями в вашем коде, поэтому я не могу быть уверен).

+0

Ну, ваш ответ был очень хорошим намеком, и я начал искать сеансы, и он это сделал. Я выяснил, что мой TempData покраснел, но я попытался сделать это упорным. благодаря – Eduard