Anforderung ändern querystring-Parameter zum Aufbau einer neuen Verknüpfung ohne Rückgriff auf string-manipulation
Möchte ich dynamisch füllen Sie einen link mit der URI der aktuellen Anforderung, sondern eine bestimmte query-string-parameter. Alle anderen querystring-Parameter (falls vorhanden) sollte nicht angefasst werden. Und ich weiß nicht im Voraus, was Sie sein könnte.
ZB vorstellen, das ich bauen will, einen link zurück auf die aktuelle Seite, aber mit dem querystring-parameter "valueOfInterest" immer gesetzt werden "wibble" (ich Tue dies aus der CodeBehind einer aspx-Seite .Net 3.5 in C# FWIW).
ZB eine Anfrage für eine der beiden:
/somepage.aspx
/somepage.aspx?valueOfInterest=sausages
werden würde:
/somepage.aspx?valueOfInterest=wibble
Und vor allem (vielleicht) einen Antrag für:
/somepage.aspx?boring=something
/somepage.aspx?boring=something&valueOfInterest=sausages
erhalten würde das langweilig params zu werden:
/somepage.aspx?boring=something&valueOfInterest=wibble
Vorbehalte: ich möchte vermeiden, string-manipulation, wenn es auch etwas eleganter in asp.net das ist robuster. Aber wenn es nicht etwas eleganter, so soll es sein.
Ich gemacht habe (ein wenig) Hausaufgaben:
Ich fand ein blog-post, die vorgeschlagen, kopieren Sie die Anfrage in einer lokalen HttpRequest-Objekt, aber das hat noch einen nur-lese-Kollektion für die querystring-Parameter. Ich habe auch einen Blick auf die Verwendung einer URI-Objekt, aber das scheint nicht zu haben eine querystring
- Die original-HttpRequest-Objekt ist ReadOnly, aber Sie können eine neue Kopie und führen Sie die änderungen, die-siehe meine Antwort unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktioniert so lange, wie [1] Sie haben eine gültige URL zu beginnen (was vernünftig erscheint) [2] stellen Sie sicher, dass Ihre neuen Wert ('Wurst') ist korrekt gekennzeichnet. Es gibt keine Analyse, die nur string-manipulation ist die Verkettung der Parameter.
Bearbeiten
Hier ist das C#:
das sollte es tun
?
für jeden parameter:http://site.com/page.aspx???parm1=x&parm2=y&parm3=z
-- sehr ärgerlich.Wenn Sie nicht finden können, etwas, das existiert, um es zu tun, dann erstellen Sie eine Kugel-Beweis-Funktion, es zu tun, das ist gründlich getestet und können als verlässlich angesehen werden. Wenn diese verwendet, string-manipulation, aber ist effizient und vollständig getestet, dann in der Realität wird es etwas anders ist, was Sie finden können jede Art und Weise.