In asp.net mvc verwende ich diesen Code:
RedirectToAction("myActionName");
Ich möchte einige Werte über den Querystring übergeben. Wie mache ich das?
Antworten:
Alle übergebenen Werte, die nicht Teil der Route sind, werden als Querystring-Parameter verwendet:
return this.RedirectToAction
("myActionName", new { value1 = "queryStringValue1" });
Würden zurückkehren:
/controller/myActionName?value1=queryStringValue1
Angenommen, es gibt keinen Routenparameter mit dem Namen "value1".
Erwägen Sie auch die Verwendung von T4MVC mit den Erweiterungsmethoden AddRouteValue()
und AddRouteValues()
(wie in dieser Frage zum Festlegen der Abfragezeichenfolge in redirecttoaction zu sehen ).
Für Leute wie mich, die die aktuellen Querystring-Werte zur RedirectToAction hinzufügen möchten, ist dies die Lösung:
var routeValuesDictionary = new RouteValueDictionary();
Request.QueryString.AllKeys.ForEach(key => routeValuesDictionary.Add(key, Request.QueryString[key]));
routeValuesDictionary.Add("AnotherFixedParm", "true");
RedirectToAction("ActionName", "Controller", routeValuesDictionary);
Wie Sie sehen, besteht die Lösung darin, das RouteValueDictionary- Objekt zu verwenden
Machen Sie nicht den gleichen Fehler, den ich gemacht habe. Ich habe 404-Fehler behandelt und wollte mit 404=filename
in den Querystring umleiten, dh mysite.com?404=nonExistentFile.txt
.
QueryString-Schlüssel können nicht mit Zahlen beginnen. Wechsel von 404
zu FileNotFound
löste mein Problem, dh mysite.com?FileNotFound=nonExistentFile.txt
.
HttpContext.Request.QueryString["404"]
.