Frage

Das Problem

Was ist der richtige Weg für die foo Parameter in der folgenden URL des Abfragezeichenfolgeflag mit asp.net zu überprüfen? Ist das überhaupt möglich?

http://example.com?bar=3&foo

Ich habe Überprüfung Request["foo"] versucht sowie Request.QueryString["foo"] und ich null für beide. Ich habe auch versucht, einen List mit den Werten aus der QueryString Sammlung bevölkern, aber wie ich weiter unten erwähnt, ist es nicht den Wert enthalten.

Die Frage

Ich verstehe, dass es keinen Wert, sondern sollte eine leere Zeichenfolge nicht Request["foo"] zurückkehren, anstatt null? Gibt es eine Möglichkeit, wenn ein Abfragezeichenfolgeflag Schlüssel, um herauszufinden, besteht selbst dann, wenn es keinen Wert hat?

Notizen

fand ich hier dass Request.QueryString.AllKeys null für Zuschnitt Abfragezeichenfolgeflag Parameter.

[Bearbeiten]

Wie unten von erklärte James und Dreas eine Regex der rohe uRL zu analysieren könnte der beste (und möglicherweise nur) Ansatz.

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
War es hilfreich?

Lösung

Sie null als Schlüssel für den NameValueCollection verwenden können und es wird Ihnen eine durch Kommata getrennte Liste von Parameternamen geben, die keine Werte haben.

Für http://example.com?bar=3&foo würden Sie Request.QueryString[null] verwenden und es würde foo abgerufen werden.

Wenn Sie mehr als einen Parameternamen haben, ohne einen Wert, wird es Sie geben einen Wert, der durch Komma getrennte ist.

Für http://example.com?bar=3&foo&test würden Sie foo,test als Wert zurück.

Update:

Sie können tatsächlich Request.QueryString.GetValues(null) verwenden, um die Parameter-Namen zu erhalten, die Werte nicht haben.

Andere Tipps

Request.ServerVariables["QUERY_STRING"] wird die Query-String, komplett, als String zurück. Dann suchen Sie es mit einem Regex oder IndexOf

Sie erhalten null, weil die foo Parameter keinen Wert mit ihm haben.

... Was ist das Problem genau?

Wenn Sie immer noch für seine Existenz überprüfen wollen (obwohl es einen Wert fehlt), versuchen, etwas wie folgt aus:

bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;

Dreas ist richtig. Variable "bar" hat einen Wert aber foo nicht.

Abfrage-Zeichenfolge [ „Bar“] wird 3 zurück, weil sie den Wert 3 in Verbindung mit der variablen Bar haben. Allerdings wird Foo null zurück, weil ihr kein Wert ist, und wenn Sie Abfrage-Zeichenfolge auf einer Variablen oder Taste aufrufen, werden Sie nach dem Wert abfragen, nicht der Schlüssel, damit ist, warum Sie null zurückkehren.

Query-String ist wahrscheinlich eine Verschwendung ein. Wenn Sie Request.Params verwenden [ „“] oder es wiederholen, dann werden Sie Ihre gewünschten finden. Es ist wirklich praktisch, als andere Dinge.

Lassen Sie mich wissen, wenn Sie Hilfe brauchen.

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