2009-07-01 4 views
1

J'ai un formulaire, lorsque l'utilisateur soumet le formulaire, je veux diriger l'utilisateur vers la nouvelle vue pour afficher le résultat soumis (transférer les données du mode viewmode pour afficher la vue). Lorsque j'ai posté le formulaire, je peux créer vm et le mettre à temp place de données _vm. Mais ce _vm peut être envoyé à une autre action DisplayData, c'est null en action DisplayData(). Il semble que lors d'une action de redirection même dans le même contrôleur, _vm est perdu bien qu'il s'agisse de Controller var, pas de méthode d'action var.Impossible de passer viewmodel à une nouvelle action par RedirectToAction

Comment résoudre ce problème?

Répondre

3

Il crée une nouvelle instance du contrôleur car il s'agit d'une nouvelle requête, car vous l'avez trouvé nul. Vous pouvez utiliser TempData pour stocker la machine virtuelle, TempData persiste les données pour 1 demande seulement

Bonne explication here

0

Une bonne façon est d'appeler

return DisplayData(_vm) 

au lieu de

RedirectToAction("DisplayData") 

DisplayData doit accepter un modèle de toute façon.

+0

mais alors vous perdez le Post, Redirect, Get Pattern – redsquare

+0

RedirectToAction ("DisplayData") sera de retour l'affichage en cours avec l'action de publication. – KentZhou

+0

@KentZhou pas sûr que je te comprends. Lorsque vous redirigez l'en-tête HTTP "Location" indique au navigateur où aller, et le navigateur fait une demande GET pour cette page. Il ne fera pas un message. – redsquare

Questions connexes