2013-05-09 23 views
6

Desidero inviare una stringa e un modello (oggetto) a un'altra azione.passaggio di modello e parametro con RedirectToAction

var hSM = new HotelSearchModel(); 
hSM.CityID = CityID; 
hSM.StartAt = StartAt; 
hSM.EndAt = EndAt; 
hSM.AdultCount = AdultCount; 
hSM.ChildCount = ChildCount; 

return RedirectToAction("Search", new { culture = culture, hotelSearchModel = hSM }); 

Quando uso la parola new invia null oggetto, anche se ho impostato gli oggetti hSm proprietà.

Questo è il mio Search azione:

public ActionResult Search(string culture, HotelSearchModel hotelSearchModel) 
{ 
    // ... 
} 

risposta

13

Non è possibile inviare i dati con un RedirectAction. Questo perché si sta eseguendo un reindirizzamento 301 e questo torna al client.

Che cosa è necessario è salvarlo in TempData:

var hSM = new HotelSearchModel(); 
hSM.CityID = CityID; 
hSM.StartAt = StartAt; 
hSM.EndAt = EndAt; 
hSM.AdultCount = AdultCount; 
hSM.ChildCount=ChildCount; 
TempData["myObj"] = new { culture = culture,hotelSearchModel = hSM }; 

return RedirectToAction("Search"); 

Dopo di che è possibile recuperare di nuovo dal TempData:

public ActionResult Search(string culture, HotelSearchModel hotelSearchModel) 
{ 
    var obj = TempData["myObj"]; 
    hotelSearchModel = obj.hotelSearchModel; 
    culture = obj.culture; 
} 
Problemi correlati