9 messaggi dal 09 novembre 2002
Ciao ragazzi mi sto studiando C# e MVC 3.
Ora il mio problema è uno:

ho due Action Result, in una mi sono creato una lista con il risultato di un file xml.
Vorrei poter riuscire a leggere questa lista all'interno della seconda Action.
Ho provato a creare anche una lista pubblica ma non la riesco a vedere, nel momento in cui entro nella seconda la vedo null.
Per farvi capire meglio:

List<Video> VideosGen; // Create all'esterno
List<Corso> CorsiGen; // Create all'esterno

Action Result Corso(){
VideosGen = new List<Video>(); // Popolate all'interno
CorsiGen = new List<Corso>(); // Popolate all'interno

qui mi carico la mia lista con tutto il file xml che ho letto.
return View();

}

Action Result ViewCorso(){
string x;
x = Request.QueryString["Corso"];
x mi servirà in seguito.....

qui mi arrivano VideosGen e CorsiGen null e vorrei riuscire a vederle all'interno.
return View();
}

qualcuno sa darmi una dritta ?

Grazie

Giorgio
193 messaggi dal 05 novembre 2009
Forse fai un po' di confusione con la logica, ma e' normale all'inizio, ti consiglio di vederti prima il Pattern MVC

Comunque per passare una lista da una action all'altra, premettendo che le action siano entrambi all'interno dello stesso controller e tu abbia popolato la lista all'interno dell'action dalla quale vuoi passarla puoi fare
una RedirectToAction("altraAction", new { Lista });

alla quali passi l'oggetto lista, naturalmente l'altra action avra come parametro d'ingresso la Lista che tu vorrai visualizzare.

Spero di aver capito bene e di essere stato chiaro
Modificato da Govinda il 24 agosto 2011 14.10 -
Modificato da Govinda il 24 agosto 2011 14.11 -
Modificato da Govinda il 24 agosto 2011 14.11 -
Modificato da Govinda il 24 agosto 2011 14.12 -
Modificato da Govinda il 24 agosto 2011 14.15 -
Modificato da Govinda il 24 agosto 2011 14.18 -
9 messaggi dal 09 novembre 2002
ciao ti ringrazio per la pronta risposta :)
ho provato a fare come dici te:
-ho controllato che effettivamente la dichiarazione dell'oggeto sia globale, era già dichiarato subito dopo la dichiarazione della classe.
-ho controllato che effettivamente ho caricato correttamente la lista
-ho fatto RedirectToAction("ViewCorso", new { CorsiGen });
dove ViewCorso è la nuova action che si trova all'interno dello
stesso controller.
public ActionResult Corso()
{
RedirectToAction("ViewCorso", new { CorsiGen });
return view(CorsiGen);
}

-nella action ViewCorso vado a mettere come parametro di input
public ActionResult ViewCorso(List<Corso> s )
{
}
Ma niente... sempre null :(
193 messaggi dal 05 novembre 2009
da_giorgio ha scritto:
ciao ti ringrazio per la pronta risposta :)
ho provato a fare come dici te:
-ho controllato che effettivamente la dichiarazione dell'oggeto sia globale, era già dichiarato subito dopo la dichiarazione della classe.
-ho controllato che effettivamente ho caricato correttamente la lista
-ho fatto RedirectToAction("ViewCorso", new { CorsiGen });
dove ViewCorso è la nuova action che si trova all'interno dello
stesso controller.
public ActionResult Corso()
{
RedirectToAction("ViewCorso", new { CorsiGen });
return view(CorsiGen);
}

-nella action ViewCorso vado a mettere come parametro di input
public ActionResult ViewCorso(List<Corso> s )
{
}
Ma niente... sempre null :(

Modificato da Govinda il 24 agosto 2011 16.02 - Togli nella ActionResult Corso() return view(CorsiGen); e prova a fare il debug per vedere cosa succede
9 messaggi dal 09 novembre 2002
ciao il return view(corsiGen) mi serve per far visualizzare il riepilogo.
Poi cliccando su un riepilogo vorrei andare sul dettaglio appunto ViewCorso con la famosa lista già precaricata... è inutile che la ricarico nuovamente ;) (seconda soluzione ma schifosa) ;)

Per farti capire meglio ActionResult Corso() è il riepilogo, ActionResult ViewCorso() è il dettaglio. In ActionResult Corso mi sono caricato una lista che ho dichiarato subito dopo la dichiarazione della classe (quindi dovrebbe essere vista nelle varie actiona). Nel momento in cui entro in ViewCorso() l'oggetto lo vedo ma a null. E' come se con il cambio di pagina si perde i valori che si trovano all'interno della lista.
193 messaggi dal 05 novembre 2009
Scusami potresti postare il codice, perche' forse riusciamo a capirci meglio.
32 messaggi dal 29 marzo 2011
la cosa semplice e funzionante è buttarlo in sessione.

 System.Web.HttpContext.Current.Session["video"] = listvideo; //salvo in sessione

//recupero dalla sessione
var myListVideo = System.Web.HttpContext.Current.Session["video"];


ps: ci sono molti modi per farlo, ma il codice che hai postato dubito che funzioni correttamente,

1) ti sei dimenticato di aggiungere un bel return d'avanti alla RedirectToAction

2) non so se funziona, quando gli passi direttamente la lista di oggetti alla RedirectToAction.

es: RedirectToAction("actionName", new { nomeParametro = object });
193 messaggi dal 05 novembre 2009
1) ti sei dimenticato di aggiungere un bel return d'avanti alla RedirectToAction

2) non so se funziona, quando gli passi direttamente la lista di oggetti alla RedirectToAction.

es: RedirectToAction("actionName", new { nomeParametro = object });
Modificato da Govinda il 25 agosto 2011 09.45 - La RedirectToAction quando gli passi direttamente la lista di oggetti non funziona, in precedenza mi ero sbagliato io, convinto che si potesse fare, cmq si la soluzione piu' semplice e' quello di buttare tutto in sessione

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.