ASP.Net MVC: Übergabe eines Zeichenfolgenparameters an eine Aktion mithilfe von RedirectToAction ()

10

Ich würde gerne wissen, wie man einen String-Parameter mit RedirectToAction () übergeben kann.

Sagen wir, ich habe diese Route:

%Vor%

Und in SomeController habe ich eine Aktion, die eine Umleitung wie folgt macht:

%Vor%

Ich habe diese Umleitung mit someString="! @ # $%? & amp; * 1" probiert und es schlägt immer fehl, egal ob ich die Zeichenfolge codiere. Ich habe versucht, es mit HttpUtility.UrlEncode (someString), HttpUtility.UrlPathEncode (someString) und mit Uri.EscapeUriString (someString) ohne Erfolg zu kodieren.

Also habe ich TempData verwendet, um someString zu übergeben, aber trotzdem wäre ich neugierig, wie ich den obigen Code funktioniere, nur um meine Neugier zu befriedigen.

    
Jean-François Beauchamp 03.02.2012, 03:12
quelle

2 Antworten

3

Ich denke, das Problem könnte entweder in Ihrer Routenreihenfolge oder in Ihrem Controller liegen. Hier ist ein Code, mit dem ich arbeiten konnte.

Routen-Definitionen

%Vor%

Methoden der Controller-Aktion

%Vor%

Wenn ich zu /Home/MoreTesting blättere, bekomme ich die gewünschte Ausgabe von "23Hello" zur Ausgabe in meinem Browser. Können Sie Ihre Routen und Ihren Controller-Code veröffentlichen?

    
user596075 03.02.2012 03:24
quelle
2

OK, ich weiß, dass diese Frage ein paar Tage alt ist, aber ich war mir nicht sicher, ob Sie dieses Problem sortiert haben oder nicht, also habe ich es mir angesehen. Ich habe schon eine Weile damit herumgespielt und das ist das Problem und wie Sie es lösen könnten.

Das Problem, das Sie haben, ist, dass die Sonderzeichen, die Probleme verursachen, eines der vielen (ich denke 20) Sonderzeichen wie% und ".

sind

In Ihrem Beispiel ist das Problem das% -Zeichen. Wie von Priyank hier gezeigt:

  

Die Routenwerte werden als Teil der URL-Zeichenfolge veröffentlicht.

Die URL-Zeichenfolge (nicht der Abfragezeichenfolgenparameter) kann% (% 25), "(% 22) usw. nicht verarbeiten. Weiter, wie von Lee Gunn im selben Beitrag gezeigt: Ссылка *% 201 - (das wird explodieren)

Eine Möglichkeit, dies zu beheben, besteht darin, {MyString} aus der Routenzuordnung zu entfernen. Um Ihre root-Zuordnung wie folgt aussehen zu lassen:

%Vor%

Dies wird dazu führen, dass der Post dies erzeugt:

Ссылка

Wenn Sie jetzt MyString setzen, wird es in einen Abfragezeichenfolgenparameter umgewandelt, der vollkommen in Ordnung ist. Ich habe es versucht und es hat funktioniert.

Priyank auch erwähnt in der SO Post ich oben verlinkt, dass Sie vielleicht dies mit einem benutzerdefinierten ValueProvider lösen könnten, aber Sie müssten seinem verknüpften Artikel folgen, um zu prüfen, ob das etwas ist, das auf Sie zutreffen würde.

    
Fran 23.05.2017 12:08
quelle