2009-08-25 32 views
4

Ich habe versucht, CookieTempDataProvider zu verwenden, um eine Basisnachricht zwischen einem Post (Entitätsaktualisierung) und einer Get (Entitätsliste) mithilfe der RedirectToAction-Methode zu übergeben. Bei Verwendung der standardmäßigen TempData-Implementierung funktioniert das problemlos. Wenn ich jedoch die cookie-basierte Version des MVC-Futures-Projekts verwende, ist das TempData-Wörterbuch nach der Umleitung leer. Dies liegt daran, dass das TempDataDictionary von der DeserializeTempData-Methode als null zurückgegeben wird. Ich weiß genau, auf welcher Codezeile das Problem auftritt, und ich weiß, wie ich es beheben kann, aber ich kann nicht glauben, dass ich der Einzige bin, der dieses Problem hat.ASP.NET MVC CookieTempDataProvider.DeserializeTempData gibt Null zurück

Vielleicht verwende ich die falsche Version des MVC Futures-Projekts, aber ich habe gerade die ASP.NET MVC v1.0 source heruntergeladen und das Problem existiert definitiv dort. Benutzt noch jemand CookieTempDataProvider, und funktioniert es für Sie?

Das Problem mit der CookieTempDataProvider-Klasse, wie ich es sehe, ist in Zeile 62, wo es das deserialized-Objekt als TempDataDictionary statt als IDictionary < String, Objekt >. Wenn ich diese Änderung mache, funktioniert alles perfekt.

Sonst jemand sieht dieses Problem oder ist es nur ich?

+0

Ein Update zu diesem Thema: Wenn ich die MVC-Komponententests ausführen, werden alle bestanden, aber wenn ich die Klasse in meiner Anwendung verwende, funktioniert die Deserialisierung, aber das resultierende Objekt wird nicht als TempDataDictionary betrachtet. – jimr

+0

Weitere Aktualisierung: Beim Ausführen der Komponententests ist das Objekt, das an die ITempDataProvider.SaveTempData-Methode übergeben wird, ein TempDataDictionary und wird als solches serialisiert. Beim Ausführen der MVC-Anwendung ist das Objekt, das an die ITempDataProvider.SaveTempDatadata-Methode übergeben wird, ein IDictionary und wird als Dictionary serialisiert. – jimr

+0

Für alle Interessierten ist dieser Fehler jetzt in MVC 3 behoben. – jimr

Antwort

3

Das gleiche hier. Funktionierte nicht nach der Verwendung von Assembly wie von MVC Futures. Ändern Sie Zeile 62 wie Sie vorgeschlagen, das Problem behoben. Danke fürs Schreiben.

+2

Yup. MVC 2.0 und Bug in Zeile 62 sind immer noch zu 100% intakt (und verursachte genau die gleichen Probleme/Probleme, bei denen TempData nach einer Weiterleitung nicht intakt war.) –