C # ASP.NET-Abfragezeichenfolgenparser

7

Wenn Sie nach einer netten und sauberen Möglichkeit gesucht haben, Ihre Abfrage-String-Werte zu parsen, habe ich folgendes herausgefunden:

%Vor%

Ich wollte schon immer so etwas haben und habe es endlich richtig gemacht ... zumindest denke ich das ...

Der Code sollte selbsterklärend sein ...

Alle Kommentare oder Vorschläge, um es besser zu machen, werden geschätzt.

    
Andre Gallo 22.02.2009, 12:45
quelle

7 Antworten

34

Eine einfache Methode zum Parsen (wenn Sie keine Typkonvertierungen vornehmen möchten) ist

%Vor%

Sie können querystring von einer URL mit

extrahieren %Vor%     
Simon_Weaver 03.09.2009 00:13
quelle
5

Da Sie nur drei verschiedene Typen behandeln, würde ich stattdessen drei verschiedene Methoden vorschlagen - generische Methoden sind am besten, wenn sie mit jedem Typargument funktionieren, das von den Typabhängigkeiten zugelassen wird.

Außerdem würde ich dringend empfehlen, dass Sie für int und DateTime die zu verwendende Kultur angeben - sie sollte nicht wirklich von der Kultur abhängen, in der sich der Server befindet. (Wenn Sie Code zum Erraten haben Kultur des Benutzers, könnten Sie stattdessen verwenden.) Schließlich würde ich auch empfehlen, eine gut spezifizierte Menge von DateTime -Formaten zu unterstützen anstatt nur was auch immer TryParse standardmäßig unterstützt. (Ich benutze% em% immer%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Beachten Sie, dass die String-Version nicht wirklich etwas tun muss, da ParseExact bereits eine Zeichenkette ist (obwohl Ihr aktueller Code "" in TryParseExact umwandelt, was möglicherweise das ist, was Sie wollen).

    
Jon Skeet 22.02.2009 12:51
quelle
3

Ich habe die folgende Methode geschrieben, um den QueryString mit stark typisierten Werten zu analysieren:

%Vor%

Anwendungsbeispiel:

%Vor%

Für einen Querystring von ?productId=5 wäre bool wahr und int productId wäre gleich 5.

Bei einer Abfragezeichenfolge von ?productId=hello wäre bool falsch und int productId gleich 0.

Bei einer Abfragezeichenfolge von ?noProductId=notIncluded wäre bool falsch und int productId gleich 0.

    
Ronald 06.05.2011 13:35
quelle
2

In meiner Anwendung habe ich die folgende Funktion verwendet: -

%Vor%

Der erforderliche Standardwert wird zurückgegeben, wenn der Parameter nicht angegeben wurde. Der Typ wird von defaultValue abgeleitet, und Casting-Ausnahmen werden nach Bedarf ausgelöst.

Die Verwendung ist wie folgt: -

%Vor%     
Adam Ralph 22.02.2009 13:02
quelle
2

Dies ist eine alte Antwort, aber ich habe Folgendes getan:

%Vor%     
Byron Whitlock 04.09.2012 22:16
quelle
1

Es scheint mir, dass Sie eine Menge untypischer Typumwandlungen machen. Die tempValue-Variablen sind sehr wichtig für den Typ, den Sie zurückgeben möchten. Im String-Fall ist der Wert auch schon ein String, also gib ihn stattdessen zurück.

    
JohannesH 22.02.2009 12:54
quelle
0

Basiert auf Ronalds Antwort Ich habe mein eigenes Querystring-Parsing aktualisiert Methode. Die Art, wie ich es benutze, besteht darin, es als eine Erweiterungsmethode für das Page-Objekt hinzuzufügen, so dass ich Querystring-Werte und -Typen leicht überprüfen und umleiten kann, wenn die Seitenanforderung nicht gültig ist.

Die Erweiterungsmethode sieht folgendermaßen aus:

%Vor%

Damit kann ich Folgendes tun:

%Vor%

Ich kann dann den Rest meines Codes schreiben und mich auf die Existenz und das korrekte Format des Querystring-Elements verlassen, so dass ich es nicht jedes Mal testen muss, wenn ich darauf zugreifen möchte.

Hinweis: Wenn Sie pre.net 4 verwenden, möchten Sie auch die folgende RedirectPermanent-Erweiterungsmethode:

%Vor%     
rtpHarry 23.05.2017 10:26
quelle

Tags und Links