2012-04-02 7 views
0

Ich habe einen Suchbildschirm mit 25 Feldern. Wenn der Benutzer auf die Suchschaltfläche klickt, sollten diese Informationen an den Server übergeben werden und der Benutzer sollte zu einer SearchResultList-Seite umgeleitet werden. Was ist der beste Weg, um die vom Benutzer ausgewählten Werte (vom Nachschlage-Bildschirm) zum SearchResultList-Bildschirm zu bekommen?Besserer Ansatz zum Übergeben von 25 Suchfeldern zu aspx Seite

kann ich zwei Möglichkeiten denken:

  1. Fügen Sie die Felder Sitzung
  2. Führen Sie die ausgewählten Werte als Query-String

Gibt es eine andere bessere Lösung?

Hinweis: Der Look-up-Bildschirm kann in Zukunft in ein Popup-div umgewandelt werden; Trotzdem wird es auf eine andere Seite umgeleitet.

Umwelt ::

Visual Studio 2010

ASP.Net Web Forms

C#

+0

Sie meinen etwas anderes als POST eine FORM? –

Antwort

3

könnten Sie das Formular auf der nächsten Seite dann dann nur die Werte über Request.Form [""] auf der Suchseite?

1

Ich würde empfehlen, eine Sitzung und ein Session-Objekt dabei zu verwenden. Etwas wie folgt aus:

// When retrieving an object from session state, cast it to 
// the appropriate type. 
ArrayList filterOptions = (ArrayList)Session["FilterOptions"]; 

// Write the modified list back to session state. 
Session["FilterOptions"] = filterOptions ; 
+1

+1 So würde ich es machen. Oft schreibe ich auch eine statische Klasse mit statischen Eigenschaften und die Get/Set-Methoden lesen/schreiben in die Sitzung. Auf diese Weise brauchen Sie kein hässliches Casting und Sie haben einen zentralen Platz für die Sitzungsvariablennamen. –

1

Es gibt eine dritte und eine bessere Option, und das ist POST zu verwenden, anstatt GET (was würden Sie tun, wenn Sie Ihre Parameter im Abfragezeichenfolgeflag setzen).

ASPX verwendet POST automatisch, wenn Sie ein Formular wie so verwenden:

<form id="form1" runat="server"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    ... 
</form> 

Das ist besser, weil die Daten auf der Seite auf Postbacks übergeben wird die HTTP-POST-Methode, die die Parameter nicht in die besagen Querystring.

Wenn Sie jedoch möchten, dass der Benutzer eine Suche ohne Programmierung mit Lesezeichen versehen/favorisieren kann, ist die Verwendung der Methode GET (querystring) am besten.

Die Verwendung des Sitzungsstatus zum Speichern von Suchparametern ist schwer zu testen, schwer zu debuggen und generell eine schlechte Methode.

1

Für die Suche, ich in der Regel bevorzugen GET mit Abfragezeichenfolgen. Sehr einfach und transparent für den Benutzer. Der einzige Vorbehalt ist bei Ihrem Fall von 25 Feldern, können Sie in die Url limit laufen.

Schauen Sie sich an, wie Stackoverflow oder Google suchen. Nur Parameter in der Abfragezeichenfolge für nicht standardmäßige Werte anzeigen. Wenn der Benutzer beispielsweise nur einen der 25 Werte ausfüllt, sollten Sie nur diesen einen Parameter übergeben.Beispiel: /search?q=term

Verwenden Sie POST für transaktionsbasierte Methoden, die Daten aktualisieren/speichern. (Oder wenn Ihre Url mit Abfragezeichenfolgen zu lang sein wird.)

Vermeiden Sie die Verwendung der Sitzung, da Randbedingungen vorliegen, die das Einschlüpfen von Fehlern ermöglichen. Sie müssen sich um Sitzungstimeouts, CDN-Caching und Benutzerwechsel zwischen Servern sorgen usw. Warum Ihr Leben komplizieren, wenn Sie es nicht brauchen.

Verwandte Themen