2009-08-25 17 views
4

J'ai essayé d'utiliser CookieTempDataProvider pour passer un message de base entre un message (mise à jour d'entité) et un get (liste d'entités) à l'aide de la méthode RedirectToAction. Lorsque vous utilisez l'implémentation TempData par défaut, cela fonctionne correctement, mais lorsque j'utilise la version à base de cookies du projet MVC Futures, le dictionnaire TempData est vide après la redirection. Cela est dû au fait que TempDataDictionary est renvoyé en tant que null à partir de la méthode DeserializeTempData. Je sais exactement sur quelle ligne de code le problème se produit, et je sais comment le réparer, mais je ne peux pas croire que je suis le seul à avoir ce problème. Peut-être que j'utilise la mauvaise version du projet MVC Futures, mais je viens de télécharger le ASP.NET MVC v1.0 source et le problème existe certainement là. Quelqu'un d'autre utilise-t-il CookieTempDataProvider, et cela fonctionne-t-il pour vous? Le problème avec la classe CookieTempDataProvider, comme je le vois, est sur la ligne 62, où il est en train de transformer l'objet désérialisé en TempDataDictionary au lieu de IDictionary < string, objet >. Quand je fais ce changement, tout fonctionne parfaitement.ASP.NET MVC CookieTempDataProvider.DeserializeTempData renvoie null

Quelqu'un d'autre voit ce problème, ou est-ce juste moi?

+0

Une mise à jour: lorsque j'exécute les tests unitaires MVC, ils passent tous, mais lorsque j'utilise la classe dans mon application, la désérialisation fonctionne mais elle ne considère pas l'objet résultant comme un TempDataDictionary. – jimr

+0

Autre mise à jour: Lors de l'exécution des tests unitaires, l'objet transmis à la méthode ITempDataProvider.SaveTempData est un TempDataDictionary et il est sérialisé en tant que tel. Toutefois, lors de l'exécution de l'application MVC, l'objet transmis à la méthode ITempDataProvider.SaveTempDatadata est un IDictionary et est sérialisé en tant que Dictionary . – jimr

+0

Pour tous ceux qui sont intéressés, ce bug est maintenant corrigé dans MVC 3. – jimr

Répondre

3

Même ici. N'a pas fonctionné après avoir utilisé l'assemblage tel qu'il est de MVC Futures. Changer la ligne 62 comme vous avez suggéré a résolu le problème. Merci d'avoir posté.

+2

Yup. MVC 2.0 et le bogue sur la ligne 62 sont toujours intacts à 100% (et causaient exactement les mêmes problèmes/problèmes où TempData ne serait pas intact suite à une redirection.) –