Warum Request.QueryString ["ReturnUrl"] NULL zurückgibt, auch wenn es in der URL vorhanden ist?

8

(Dies ist eine engere Frage)

In meiner asp.net MVC-Aktion suche ich, ob der ReturnUrl-Wert in der URL ist.

Meine URL sieht so aus:

%Vor%

In meiner Aktion suche ich, ob dieser Querystring-Wert existiert und NULL zurückgibt. Wie kann das sein?

Der Code:

%Vor%

Bei der Verfolgung durch die Anwendung wird nur der Körper der if-Anweisung übersprungen, d. h. es ist NULL.

Wie kann das erklärt werden?

Aktualisieren

In der Steuerung, die überprüft, ob der Benutzer angemeldet ist, habe ich einen ActionFilter, der wie folgt aussieht:

%Vor%     
Blankman 29.01.2010, 14:57
quelle

3 Antworten

3

Versuchen Sie, den Code zu debuggen - Sie sollten im Debugger die gesamte Liste der QueryString-Parameter sehen können, damit Sie sehen können, ob Sie sie falsch geschrieben haben.

    
Justin 29.01.2010 15:01
quelle
1

Ich bin gerade auf ein ähnliches Problem gestoßen.

Request.RawUrl ist korrekt, in der URL, die an den Browser gesendet wird, fehlt der QueryString. Überprüfen Sie die Quelltextquelle für die Seite, und überprüfen Sie die URL für das Aktionsattribut Ihres Formularelements. Sie werden wahrscheinlich feststellen, dass der QueryString fehlt.

Wahrscheinlich wird eine Überladung von @ Html.BeginForm verwendet, die den Parameter routeValues ​​verwendet. Wenn Sie eine Überladung mit "routeValues" verwenden, wird eine neue Routing-URL generiert und alle Querystring-Parameter entfernt. In meinem Fall wollte ich das Attribut enctype hinzufügen und für die einzige Überladung muss routeValues ​​angegeben werden. Ich nehme an, es ist ein Versehen in MVC 3.

Sie können jedoch Ihr eigenes Formular-Tag auf die altmodische Art schreiben. Betrachtet man den Quellcode für MVC 3, scheint es, dass die Basisüberladung für Html.BeginForm Request.RawUrl verwendet.

Versuchen Sie Folgendes:

%Vor%     
ShadowChaser 01.08.2012 06:07
quelle
0

Ich hatte ein ähnliches Problem wie Anfänger Asp.Net MVC Entwickler. Das Problem war ein Login-Formular, das das Formular an seinen spezifischen Controller ausgab. Daher sind fehlende Werte für Abfragezeichenfolgen sehr normal. Weil das Formularaktionsattribut wie action="/ index / login"

ist

Die von mir angewendete Lösung besteht darin, meinem Formular ein verstecktes Feld mit dem Wert aus der Abfragezeichenfolge hinzuzufügen. Dies muss dem ActionResult oder dem Modell als Parameter hinzugefügt werden.

%Vor%

Eine andere Lösung besteht darin, sie an die Formaktions-URL wie folgt zu übergeben:

%Vor%     
x-freestyler 23.02.2017 23:32
quelle