2009-06-03 7 views
3

ein wenig Hintergrundinformationen zuerst. Ich habe die meiste Zeit meiner Karriere mit Web Forms gearbeitet und bin seit kurzem an .NET MVC interessiert. Mir ist klar, dass es staatenlos sein soll, aber ich verstehe nicht, wie es überhaupt machbar ist. In einer Formularanwendung authentifiziert sich der Benutzer und ich gebe eine Benutzer-ID und einige Rollen zurück, die dann in dieser Benutzersitzung platziert werden. Wenn ich sie brauche, muss ich sie nur aus der Sitzung rausholen und ich habe sie. Nach dem, was ich gelesen habe, schließen sich Sitzung und MVC gegenseitig aus. Ich habe gelesen, dass man TempData verwenden kann, um Werte zu übergeben, aber es bleibt nur für eine Seite besuchen und dann ist es weg. Gibt es eine Standardmethode, mit der Daten auf einer MVC-Site "persistiert" werden können, abgesehen von der Hinzufügung von redundantem Code zu jedem Controller, an den ich die Daten weiterleiten möchte?.NET MVC und sichere Weitergabe von Daten zwischen den Seiten

Antwort

2

Das ASP.NET MVC-Framework basiert auf dem ASP.NET-Framework aufgebaut und als solche können Sie Sitzungsstatus in ASP.NET MVC verwenden:

Session["MyVar"] = "SomeValue"; 
3

Ich denke, es könnte einige Verwirrung in Bezug auf sein hier . Was hier zustandslos ist, ist das HTTP-Protokoll. ASP.NET WebForms war eine Technologie, die entwickelt wurde, um ein Framework zu erstellen, das die Zustandslosigkeit von HTTP "umgeht" und ein statusbehaftetes webbasiertes Anwendungsframework erstellt. Aus diesem Grund sehen Sie in WebForms Dinge wie ViewState, der im Wesentlichen den Zustand der Anwendung entlang der Pipe transportiert.

ASP.NET MVC kam und nahm einen anderen Ansatz. Es umfasst die Staatenlosigkeit von HTTP. Deshalb gibt es in MVC keinen ViewState.

Das bedeutet jedoch nicht, dass Sie nicht mehr mit zustandsbehafteten Entitäten interagieren. Der Client-Computer (ein Browser für Beispiel) ist eine zustandsbehaftete Anwendung, genauso wie der Server, der den serverseitigen Code ausführt (in diesem Fall IIS oder was auch immer), ebenfalls statusbehaftet ist.

Daher sind Dinge, die auf der Serverseite sind immer noch Stateful (wie Sitzung, Anwendung, Cache), und Sie können sie weiterhin verwenden. Auch die Client-Seite ist statusbehaftet, weshalb clientseitige Skripte in den letzten Jahren so stark geworden sind; Leute, die versuchen, die Statusfheit des Browsers voll auszunutzen.

Verwandte Themen