(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%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%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"
istDie 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%Tags und Links asp.net-mvc asp.net query-string