2012-04-11 8 views
20

Ho RedirectToAction come valore di ritorno in un controller e, a mio avviso, utilizzo ViewBag. Mentre è un problema noto che ViewBag diventa vuoto dopo un RedirectToAction. Ho un problema quando reinizializzo i valori di ViewBag nel mio controller sovraccaricato nel metodo OnActionExecuting. ViewBag è di nuovo vuoto. Ma il problema è che sul mio PC locale (win7) funziona bene ma sul server di hosting web (win 2008) si blocca. Quindi qualcuno può aiutare a dire che cosa può causare quello? Forse è un ambiente o qualcosa del genere?ViewBag è NULL dopo RedirectToAction (+ reinizializzazione di ViewBag)

+0

Inserisci il tuo codice in modo che possiamo capire meglio – Iridio

risposta

1

C'era un'eccezione profondo strato di dati che è stato erroneamente catturato e impedito di propagazione ma causato ViewBag fuga.

Quindi fare attenzione con le eccezioni di cattura.

42

ViewBag e ViewData sopravvivono solo alla richiesta corrente. TempData è la cosa da usare quando si utilizzano i reindirizzamenti (e solo allora): http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications afferma chiaramente:

[...] l'oggetto TempData funziona bene in uno scenario di base:

  • dati che passano tra l'HTTP corrente e successivo richiede
+0

TempData utilizza la sessione, e non voglio usare Session, anche la stringa di query nessuno, come può passare il valore dopo il reindirizzamento? – KnowGe

+0

È sempre possibile sostituire il provider TempData, se lo si desidera. Ecco un esempio di un provider TempData basato su cookie, ma puoi sempre creare qualcos'altro che ha senso per te nel tuo scenario: https://brockallen.com/2012/06/11/cookie-based-tempdata-provider/ –

+0

grazie per la rapida risposta per il vecchio post. Dopo il reindirizzamento, l'oggetto di risposta si rinnova e la proprietà del cookie non può contenere il valore. – KnowGe