Kann ich Viewstate verwenden, um die Notwendigkeit zu beseitigen, einen Abfrage-String zu übergeben?

StackOverflow https://stackoverflow.com/questions/1206492

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe eine Seite mit mehreren erweiterbaren Listen. In einer perfekten Welt würde Ich mag Links zu jedem dieser Listen angezeigt werden und wenn man angeklickt wird, wird es die Seite mit dieser bestimmten Liste angezeigt neu laden. Ich las, dass Viewstate die Notwendigkeit für versteckte Eingabefelder beseitigen, Query-Strings, etc, aber ich bin nicht mit dem Konzept vertraut.

Im Grunde brauche ich zwei Dinge zu erreichen:

  1. Fügen Sie ID-Liste obj auf Viewstate, wenn Link geklickt wird
  2. Lesen ID von Viewstate obj wenn Seite geladen wird, diese Liste angezeigt werden

Kann mir jemand bieten einige Ressourcen und / oder Hilfe zu diesem Thema? Dank!

War es hilfreich?

Lösung

Viewstate ist im Wesentlichen ein lang codiert verstecktes Feld am oberen Rand der Seite gespeichert. Der wesentliche Unterschied zwischen diesem und einem regelmäßigen versteckten Feld ist, dass ASP .NET es dekodieren und analysiert sie automatisch auf einem Postbacks.

Es gibt bessere Wege zu erreichen, was Sie tun möchten.

  • Sie können die Abfragezeichenfolgeflag verwenden. Alles, was Sie vorbei ist eine Liste ID. Fügen Sie die Listen-ID an das Ende Ihrer Links und suchen sie auf Page_Load. Legen Sie die entsprechende Liste, wenn Sie sie finden. Sie wollen den Fall behandeln, wo eine Liste ID nicht bestanden. Die Abfragezeichenfolgeflag ist nicht böse . Es kann dramatisch helfen Seite Gewicht zu reduzieren. Wenn mit einer anständigen verwendet URL rewriter , erhalten Sie eine Menge Kontrolle darüber, was übergeben wird (und das ist entscheidend, was nicht)
  • Wenn Sie ASP .NET-Steuerelemente sind (zB Taste oder Linkbutton), um die Darstellung einer Liste auszulösen, können Sie die Command Eigenschaft festgelegt und dass bis im Ereigniscode holen. Sie können diese dann als Parameter an eine beliebige Methode übergeben oder Steuerung Ihrer Liste Rendering verarbeitet.

Andere Tipps

Viewstate Informationen auf einer einzigen Seite zwischen Post Rücken speichern verwendet wird, nicht Argumente zwischen den Seiten passieren.

Sie können Argumente zwischen den Seiten passieren mit:

  1. Session
  2. Abfrage-String
  3. Cookies
  4. Benutzerdefinierte Datenbank
  5. Cross-Seite Postbacks

Keine dieser Methoden werden die Daten automatisch in die Viewstate der Seite hinzufügen angefordert wird. Von denen, glaube ich, nur # 2 arbeitet mit gerade HTML-Links (GET), in der Regel der Rest ein Postback beinhalten (POST).

Sie müssen immer eine Art von Viewstate Setter ( Viewstate [ "id"] = source.Id ) in der gewünschten Seite.

Gewusst wie: Werte zwischen ASP.NET Web Pages

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top