2014-10-30 4 views
0

На странице Индекс у меня есть какая-то форма. На представить я использую этот код в HomeController:Отправить данные POST в ASP.NET

[HttpPost] 
    public ActionResult Index(EventDetails obj) 
    { 

     if (ModelState.IsValid) 
     { 
      return RedirectToAction("Index2","Home"); 
     } 
     else 
     { 
      return View(); 
     } 

    } 

    public ActionResult Index2() 
    { 

     return View(); 
    } 

Так он будет перенаправлять меня на другую страницу с именем index2. Как я могу получить данные POST, отправленные на странице «Индекс» и использовать их на странице «Index2». И как показать данные POST, отправленные пред. страница на странице просмотра?

+0

Вы можете использовать только передавать почтовые данные как routeValues ​​при перенаправлении ... – Daniel

+1

смотрите этот ответ http://stackoverflow.com/ Вопросы/129335/how-do-you-redirect-to-page-use-the-post-verb –

+0

Если 'EventDetails' содержит только примитивные свойства, вы можете использовать' return RedirectToAction («Index2», obj); ' и изменить 'public ActionResult Index2 (EventDetails obj) {..' (примечание не работает, если какие-либо свойства являются сложными объектами или коллекциями). В качестве альтернативы вы можете добавить 'obj' в сеанс и получить его в' Index2'. –

ответ

2

Поскольку вы делаете запрос GET после POST, вы не можете отправить тело из POST вместе с ним. Самое простое решение заключается в использовании TempData, для временного хранения данных по запросам:

[HttpPost] 
public ActionResult Index(EventDetails obj) 
{ 

    if (ModelState.IsValid) 
    { 
     TempData["eventDetails"] = obj; 
     return RedirectToAction("Index2","Home"); 
    } 
    else 
    { 
     return View(); 
    } 

} 

public ActionResult Index2() 
{ 
    var obj = TempData["eventDetails"] as EventDetails; 
    return View(obj); 
} 
Смежные вопросы