2012-04-03 9 views
0

Hallo Ich habe eine kleine List<string>, die ich über Postbacks auf nur einer Seite pflegen will. Die Liste enthält nicht mehr als 10 Einträge, wobei jeder Eintrag maximal 40 Zeichen lang ist (keine sensiblen Daten).ASP.NET Webforms pflegen Liste <string> über Postbacks

Ich weiß, dass ähnliche Fragen gestellt wurden, aber ich bin etwas ambivalent zwischen der Speicherung in ViewState oder Session. Ich habe gehört, dass selbst kleine String-Werte dazu führen können, dass der ViewState-Wert ziemlich groß wird. Ich würde gerne durch die Liste iterieren und Linq verwenden, um sie abzufragen, aber wäre ich besser mit einem string[] Array, und würde diese Liste (von bescheidener Größe) in Ordnung sein, in ViewState zu speichern oder sollte ich es in Session speichern? Vielen Dank.

Antwort

1

Das Speichern in ViewState ist keine schlechte Idee, wenn Sie es nicht missbrauchen. Wenn die Liste klein ist und nur auf einer Seite sinnvoll ist, dann gehen Sie darauf.

Denken Sie daran, ViewState kann manipuliert werden, wenn Sie also nicht wollen, dass der Kunde davon erfährt, dann sind Sie golden. Ansonsten speichern Sie es in Sitzung.

+0

Hey Josh, danke dafür. Gibt es einen zwingenden Grund, es in 'Session' zu speichern? – maGz

+0

Dies ist wahrscheinlich nur eines von zwei Dingen in meiner gesamten Anwendung, die ich absichtlich in ViewState speichern möchte. – maGz

+0

@maGz - Nur wenn Sie möchten, dass es für die gesamte Sitzung bestehen bleibt oder auf verschiedenen Seiten darauf zugreifen kann. Ich tendiere dazu, die Sitzung so wenig wie möglich zu nutzen, einfach weil es die Skalierung erschweren kann, wenn Sie stark von der Sitzung abhängig sind. Wie zum Beispiel an einen anderen Server in einer Webfarm weitergeleitet werden. Wenn es nur für eine einzelne Seite existiert, ist ViewState die beste Wahl. Wiederum missbrauche es nicht. Large ViewState ist seine eigene Form des Bösen. – Josh

2

Ich wäre mehr besorgt über den Anwendungsbereich dieser List<>. Wenn es nur auf diese eine Seite beschränkt ist, dann denke ich, dass es vollkommen akzeptabel ist, die ViewState; genau dafür war es bestimmt.

Wenn Sie jedoch über mehrere Seiten bestehen müssen, wäre es sinnvoller, Session oder Cache auszuwerten.

Ich würde auch im Auge behalten, wenn die Liste für jeden Benutzer unterschiedlich ist, oder wenn es unter mehreren Benutzern geteilt werden könnte. In diesem Fall würde ich mich zu Cache neigen.

Schließlich, und ich werde wahrscheinlich in diesem Fall in Vergessenheit geraten, aber Sie können auch auf die Option der Speicherung der ViewState in der serverseitigen Speicher mit der SessionPageStatePersister Klasse.

Viel Glück!

+0

alle Informationen hilft in meinem Lernen so werde ich +1 zu Ihnen! Ich brauche es nicht über mehrere Seiten hinweg (eigentlich würde ich es bevorzugen, wenn die Daten nirgendwo sonst verfügbar wären, obwohl ich alle Session-Vars 'OnLoggedOut' mit 'Session.Abandon()' lösche). Es wird den Benutzer wechseln, da ich im Grunde die Dateinamen von Fotos, die von Benutzern hochgeladen wurden, verfolgen möchte. Die Sache ist, dass Benutzer auch bestimmte Fotos weglassen können, die sie bereits hochgeladen haben, und mir auch eine Möglichkeit zum Überprüfen geben wenn sie nicht mehr als 10 Fotos hochladen. – maGz