Quindi ho un ViewBag.Something
e questi dati sono generati casualmente. A mio avviso, l'ho impostato su un'etichetta come @Html.LabelFor(m => m.Something, (string)ViewBag.Something)
. Funziona bene ma quando invio il modulo ci possono essere errori e se ci sono errori, ho bisogno che questa etichetta rimanga la stessa, non voglio più dati dinamici/casuali, quindi non chiamerei il metodo controller che ha generato questo ViewBag. C'è un modo per mantenere questo valore senza avere qualche variabile privata nel mio controller? Qualche modo carino con MVC/Razor?Come possono essere salvati i dati ViewBag dopo un modulo?
risposta
In get, impostare un modello, impostarlo in modo dinamico e quando return view()
viene eseguito, fare return view(model)
. Quindi, nella vista, imposta un campo nascosto che può continuare a trasmettere il valore necessario. Ho scelto di seguire questa strada perché non devo preoccuparmi di alcun codice server per far funzionare questo lavoro su un post e non devo preoccuparmi di alcuna sessione.
Opzione 1:
passare il valore di "ViewBag.Something" al controller utilizzando i valori di percorso:
@Html.ActionLink("ButtonText", "ActionName", new { Something = @ViewBag.Something })
Opzione 2: È possibile utilizzare TempData.
public ActionResult Index()
{
var Something = "YOURVALUE";
TempData["Something"] = Something;
.......
}
public ActionResult OtherAction()
{
var Something = TempData["Something "];
...........
}
Passando Stato tra i metodi di azione
metodi azione potrebbe essere necessario trasmettere dati a un'altra azione, ad esempio se si verifica un errore quando un form viene inviata, oppure se il metodo deve reindirizzare a ulteriori metodi, come potrebbe accadere quando l'utente viene indirizzato a una vista di accesso e quindi al metodo di azione originale.
Un metodo di azione può memorizzare i dati nell'oggetto TempDataDictionary del controller prima che invochi il metodo RedirectToAction del controller per richiamare l'azione successiva. Il valore della proprietà TempData è memorizzato nello stato della sessione. Qualsiasi metodo di azione chiamato dopo aver impostato il valore TempDataDictionary può ottenere valori dall'oggetto e quindi elaborarli o visualizzarli. Il valore di TempData persiste finché non viene letto o fino a quando la sessione scade. Tempdata persistente in questo modo abilita scenari come il reindirizzamento, poiché i valori in TempData sono disponibili oltre una singola richiesta.
quindi mi sarebbe memorizzare ViewBag.Something in un TempData quando ho colpito inviare e se qualcosa va storto, sarà disponibile per l'uso? Questo potrebbe creare problemi perché la mia etichetta viene popolata da ViewBag e immagino che ora avrò bisogno di una sorta di if? – Pittfall
Vedere il mio aggiornamento per un'altra opzione che è possibile provare. –
Grazie per l'aiuto, sembra buono ma sono andato in una direzione diversa, quindi non posso accettare la tua risposta – Pittfall
Visualizzazione messaggio nel viewbag dopo la pubblicazione (I utente questo metodo)
ActionResult SubmitUser(){
ViewBag.Msg =TempData["Msg"];
return view();
}
[HtttpPost]
ActionResult SubmitUser(){
TempData["Msg"] ="Submitted Successfully"];
return view();
}
il valore è inviare per ottenere metodo ..
- 1. Perché ruby-debug dice "I fotogrammi salvati possono essere incompleti"
- 2. iTunes Connect invia per revisione: i dati della tua app non possono essere salvati. Riprovare
- 3. I dati UDP possono essere consegnati danneggiati?
- 4. Rileva i dati non salvati utilizzando angularjs
- 5. Perché i file audio JavaScript .play() non possono essere salvati su iPhone safari?
- 6. ViewBag è NULL dopo RedirectToAction (+ reinizializzazione di ViewBag)
- 7. TypeError: I dati immagine non possono essere convertiti in float
- 8. I dati crittografati RSA possono essere inviati tramite HTTP?
- 9. Come rilevare i dati non salvati nel modulo quando l'utente lascia la pagina?
- 10. EditorHelper utilizza ViewBag per passare i dati al modello corrispondente?
- 11. Quanti dati possono essere memorizzati in MySQL?
- 12. Quanti dati possono essere inviati tramite $ _GET
- 13. I dati principali con MagicalRecord non vengono salvati su iCloud
- 14. Come evitare un modello anemico di dati? I repository possono essere iniettati in entità?
- 15. Come modificare la quantità di campi che possono essere registrati in un modulo con IIS 7.5?
- 16. Ci sono monadi che possono essere usati come un automa?
- 17. I metodi web possono essere sovraccaricati?
- 18. I thread in un vettore non possono essere uniti
- 19. I org.opencv.imgcodecs.Imgcodecs importazione non possono essere risolti
- 20. I generatori PHP possono essere clonati?
- 21. I costruttori C++ possono essere template?
- 22. I puntatori possono essere di dimensioni diverse?
- 23. Come leggere i dati del modulo PDF usando iTextSharp?
- 24. quanti dati possono gestire i grafici js
- 25. Dove vengono salvati i dati 'chrome.storage.local' dell'estensione chrome?
- 26. Modulo HTML: i parametri GET/POST inviati possono essere soppressi utilizzando solo HTML o CSS?
- 27. Come determinare i valori salvati nello stack?
- 28. Come creare un BaseController con un ViewBag
- 29. I valori CFHEADER possono essere letti da un altro codice?
- 30. come faccio a mantenere i dati del modulo dopo aver inviato il modulo utilizzando javascript?
Questo ha un problema di sicurezza. Se qualcuno ispeziona il codice, sarà in grado di ottenere o persino modificare i dati ... E se fosse un oggetto? – Nick