2009-08-19 7 views
1

J'ai un ActionResult qui définit TempData comme un objet.Tempdata dans ASP.Net MVC avec demande JSON

La page affichée contient un bouton qui lance une requête JSON sur le même contrôleur. (Pour la population jqGrid).

TempData sur la demande JSON est null - pourquoi cela se produit-il? Encore plus bizarre, si j'avais un bouton qui enregistre sur le même contrôleur, et je clique dessus à la place de mon bouton de demande JSON, TempData sera là, mais si je clique sur le bouton JSON, puis le bouton post, TempData sera nul.

Aide appréciée.

Merci, Chris

+0

Avez-vous des échantillons de code que vous pourriez nous montrer? –

+0

Je suis d'accord avec James, nous devons voir le code ici. – Lazarus

Répondre

5

Ne pas essayer de transmettre des données d'une action à un autre via TempData lorsqu'ils ne sont pas redirection. TempData is only for redirects. Il est fort probable qu'un autre élément de votre page fasse une demande avant que vous n'appuyiez sur le bouton, entraînant la disparition des éléments que vous avez écrasés dans TempData. C'est pourquoi TempData est uniquement destiné aux redirections. seulement lors de la redirection peut toute confiance à tous de ce que la prochaine demande sera.

Au lieu de cela, placez les données dans la page rendue. Lorsque vous devez demander une action qui a besoin de ces données, transmettez-la explicitement en tant que paramètre de chaîne de requête.

HTTP est sans état. Apprenez à vivre avec ça. N'essayez pas d'introduire l'état sur votre serveur; vous le regretterez si vous le faites.