Prüfen Sie, ob nicht bewertet query-string existiert in der url mit C#
Ich habe gesehen, ein paar Beispiele, wie um zu prüfen, ob ein query-string existiert in einer url mit C#:
www.site.com/index?query=yes
if(Request.QueryString["query"]=="yes")
Aber wie würde ich überprüfen, einen string ohne parameter? Ich brauche nur zu sehen, wenn es vorhanden ist.
www.site.com/index?query
if(Request.QueryString["query"] != null) //why is this always null?
Ich weiß, es gibt wahrscheinlich eine einfache Antwort und ich werde das Gefühl dumm, aber ich habe nicht in der Lage, es zu finden noch. Danke!
Wenn überhaupt möglich, versuchen Sie nicht, um Informationen in das Herrenhaus. Entweder sicherstellen, dass der Aufrufer setzt ein Wert für eine Abfrage-parameter übergeben Informationen über einen query-parameter, oder, wenn es nicht sinnvoll ist, als Schlüssel/Wert-paar dann stattdessen manipulieren Sie die Abfrage in einer anderen Art und Weise. Mit einem query-parameter, für die kein Wert hinzufügen von Informationen wird zu verwirrend sein, zu denen die Nutzung der Website.
Das macht Sinn für mich. Ich kann nicht in der Lage, ändern Sie die URL, aber, da ich Sie nicht erstellen Sie es in den ersten Platz, und mein Vorgesetzter nutzt es für stats und so. Ich werde ihn Fragen, ob er okay ist mit dem Wechsel auf einen 'query=true' Abfrage des Typs string.
Das macht Sinn für mich. Ich kann nicht in der Lage, ändern Sie die URL, aber, da ich Sie nicht erstellen Sie es in den ersten Platz, und mein Vorgesetzter nutzt es für stats und so. Ich werde ihn Fragen, ob er okay ist mit dem Wechsel auf einen 'query=true' Abfrage des Typs string.
InformationsquelleAutor Daniel Miller | 2013-12-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht angeben, eine Wert dann die Schlüssel automatisch auf null, so dass Sie nicht prüfen, seine Existenz.
Um zu überprüfen, ob der Wert tatsächlich existiert können Sie überprüfen, in der Sammlung von Werte gleich null, wenn es mit Ihrem Schlüssel:
Dies funktioniert gut, müssen Sie nur überprüfen, dass für null-Werte nach
InformationsquelleAutor Ludovic Feltz
Gibt es
null
weil im query-string dann hat es keinen Wert für diesen Schlüssel. Ich denke, die überprüfen, die Sie suchen, ist dies:oder auch:
Letzteres ist wahrscheinlich besser geeignet, da das array bereits zwischengespeichert.
Ah, kapiert. Dein code funktioniert, wenn der query-string einen Wert hat. Ansonsten wird der Schlüssel angezeigt wird, als null. Ähnlich zu dem, was Grant sagte in seiner Antwort.
InformationsquelleAutor Mike Perrenoud
dies ist der Schnellste Weg, um zu überprüfen, Dank Ludovic Antwort
InformationsquelleAutor Emad
Ludovic hat die richtige Antwort. Aber ich würde gerne eine stabilere version.
InformationsquelleAutor an phu
Diese ist ausführlich und es funktioniert. Hier ist eine .NET Geige.
InformationsquelleAutor Shaun Luttin
Es stellt sich heraus, dass, wenn der Wert null ist, dann ist der key auch null in der
QueryString
Sammlung. Ihre beste Wette ist, einfach einen Wert zuweisen, der für die Abfrage ein. Es könnte eine Möglichkeit für Sie, benennen Sie die parameter so, dass diese macht mehr semantischen Sinn. Zum Beispiel, anstattwww.site.com/index?getdocument=yes
Sie tun konntewww.site.com/index?action=getdocument
Allerdings, wenn Sie wollen immer noch die url
www.site.com/index?query
zu arbeiten, gibt es einen Weg: nicht dieQueryString
an alle und analysieren Sie die URL manuell:InformationsquelleAutor Matthew
Können Sie nicht verwenden, einen null-check, um festzustellen, ob ein Schlüssel vorhanden ist, wenn das "=" ist nicht geliefert werden, da null bedeutet, dass der Schlüssel war nicht in der Abfrage-string.
Das problem ist, dass die "Abfrage" wird behandelt wie ein Wert mit null-Taste und nicht eine Taste mit einem null-Wert.
In diesem Fall der Schlüssel ist auch null innerhalb
Request.QueryString.AllKeys
.Habe ich dieses generische Methode zu "reparieren" die null-key problem in der Abfrage-string, bevor Sie es. Dies nicht um manuell Parsen der Zeichenfolge.
Beispiel:
Methode:
InformationsquelleAutor Cesar
if(Request.QueryString["query"] != null)
wird überprüfen, um zu sehen, ob die Wert ist null, aber der Wert wird immer null sein, ob die Abfrage vorhanden ist oder nicht.Wenn "Abfrage" enthalten war, die als parameter im querystring, aber kein Wert zugewiesen wurde, dann sollte es existieren, in der die querystring-Schlüssel-Sammlung, aber den Wert null.
Der parameter existiert in der Abfrage-string-Schlüssel-Sammlung, wenn es nicht einen Wert, und den Wert null, wie Sie sagte. Jedoch, es stellt sich heraus, ob es keinen Wert, der Schlüssel ist null, auch nicht als "Abfrage".
InformationsquelleAutor crunchy
Bevorzuge ich:
InformationsquelleAutor CompanyDroneFromSector7G