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.
Eine einfache Methode zum Parsen (wenn Sie keine Typkonvertierungen vornehmen möchten) ist
%Vor%Sie können querystring von einer URL mit
extrahieren %Vor%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).
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.
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%Dies ist eine alte Antwort, aber ich habe Folgendes getan:
%Vor%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%Tags und Links c# asp.net query-string