Wie entferne ich Elemente aus der Abfragezeichenfolge für die Umleitung?

8

In meiner Basisseite muss ich ein Element aus der Abfragezeichenfolge entfernen und umleiten. Ich kann
nicht verwenden

%Vor%

, da die Sammlung schreibgeschützt ist. Gibt es eine Möglichkeit, die Abfragezeichenfolge abzurufen (außer für dieses eine Element), ohne die Auflistung zu durchlaufen und neu zu erstellen?

    
Danimal 09.09.2008, 14:03
quelle

10 Antworten

8

Sie müssten die URL rekonstruieren und dann umleiten. Etwas wie das:

%Vor%

Jedenfalls habe ich das nicht getestet, aber es sollte funktionieren (oder wenigstens in die richtige Richtung).

    
Ryan Farley 09.09.2008, 14:21
quelle
10

Sie können vermeiden, den ursprünglichen Abfrage-String zu berühren, indem Sie stattdessen eine Kopie davon bearbeiten. Sie können dann die Seite wie folgt auf die URL umleiten, die Ihre geänderte Abfrage enthält:

%Vor%

Aktualisierung:

Es stellt sich heraus, dass wir den Code wie folgt vereinfachen können:

%Vor%     
Ziad 03.12.2012 14:50
quelle
2
%Vor%

Ich hack schnell, erspare dir wenig. Aber foo wird nicht für den Code vorhanden sein, der darauf in nextpge.aspx wartet:)

    
Holly Styles 09.09.2008 14:14
quelle
2

Interessante Frage. Ich sehe keine wirklich praktikable Alternative zum manuellen Kopieren der Sammlung, da KopieTo nur Ihnen erlaubt, die Werte (und nicht die Schlüssel) zu erhalten.

Ich denke HollyStyles 'Hack würde funktionieren (obwohl ich nervös wäre, wenn ich einen Replace in einen QueryString einfügen würde - obv. abhängig vom Anwendungsfall), aber da ist eine Sache, die mich stört ..

Warum wird die Zielseite nicht vom QueryString entfernt?

Es wird einfach ignoriert?

Wenn das nicht gelingt, müssen Sie nur in den sauren Apfel beißen und eine util-Methode erstellen, um die Sammlung für Sie zu ändern.

UPDATE - Folgende Antwort von OP

Ahhhh! Ich sehe jetzt, ja, ich hatte ähnliche Probleme mit SiteMap, die einen vollständigen Vergleich der Zeichenfolge durchführen.

Da es nicht möglich ist, den anderen Quellcode (d. h. die Suche) zu ändern, würde ich wahrscheinlich sagen, dass es am besten ist, die Zeichenfolge zu ersetzen. Auch wenn Sie häufig einen ähnlichen Code finden, wäre es ebenso einfach, eine Dienstprogrammfunktion zum Klonen der Sammlung einzurichten, indem Sie ein Array von Werten verwenden, um daraus zu filtern.

Auf diese Weise müssten Sie sich nie wieder um solche Probleme kümmern:)

    
Rob Cooper 09.09.2008 14:26
quelle
2

HttpUtility.ParseQueryString(Request.Url.Query) return ist QueryStringValueCollection . Es erbt von NameValueCollection .

%Vor%     
alex1kirch 17.11.2011 14:52
quelle
0
  

Die Suchseite hängt "& amp; terms=" an die Abfragezeichenfolge zum Hervorheben an, also   es vermasselt es.

Nur eine andere Option ist eine Regex-Ersetzung. Wenn Sie sicher wissen, dass & amp; Begriffe sich in der Mitte der Sammlung befinden, lassen Sie den Trailing & amp; in der Regex, wenn Sie sicher wissen, dass es am Ende ist, dann lassen Sie die schleppende & amp; und ändern Sie die Ersatzzeichenfolge "& amp;" zu String.Empty

%Vor%     
Holly Styles 09.09.2008 15:15
quelle
0

Request.Url.GetLeftPart(UriPartial.Path) sollte dies tun

    
Answer 18.01.2012 23:27
quelle
0

Ich fand, das war eine elegantere Lösung

%Vor%     
Chris 02.05.2012 10:44
quelle
0

Hier ist eine Lösung, die LINQ gegen Request.QueryString verwendet, was bei Bedarf eine komplexe Filterung von qs-Parametern ermöglicht.

Das folgende Beispiel zeigt, wie ich den Parameter uid ausfiltern kann, um eine relative URL für die Umleitung zu erstellen.

Vorher: http://www.domain.com/home.aspx?color=red&uid=1&name=bob

Nach: ~/home.aspx?color=red&name=bob

Entfernen Sie den QS-Parameter von der URL

%Vor%     
biofractal 29.04.2013 12:56
quelle
-1

Können Sie die Sammlung klonen und dann auf die Seite mit der geklonten (und geänderten) Sammlung umleiten?

Ich weiß, es ist nicht viel besser als das Iterieren ...

    
Michael Haren 09.09.2008 14:17
quelle

Tags und Links