У asp.net mvc я використовую такий код:
RedirectToAction("myActionName");
Я хочу передати деякі значення через рядок запитів, як це зробити?
Відповіді:
Будь-які передані значення, які не є частиною маршруту, будуть використовуватися як параметри рядка запитів:
return this.RedirectToAction
("myActionName", new { value1 = "queryStringValue1" });
Повернеться:
/controller/myActionName?value1=queryStringValue1
Припускаючи, що немає параметра маршруту з назвою "value1".
Також розгляньте можливість використання T4MVC , який має методи розширення AddRouteValue()
та AddRouteValues()
(як видно з цього питання щодо встановлення рядка запиту в redirecttoaction ).
Для таких людей, як я, які прагнули додати значення поточного рядка запиту до RedirectToAction, це рішення:
var routeValuesDictionary = new RouteValueDictionary();
Request.QueryString.AllKeys.ForEach(key => routeValuesDictionary.Add(key, Request.QueryString[key]));
routeValuesDictionary.Add("AnotherFixedParm", "true");
RedirectToAction("ActionName", "Controller", routeValuesDictionary);
Як ви бачите, рішення полягає у використанні об’єкта RouteValueDictionary
Не робіть тієї самої помилки, що і я. Я обробляв 404 помилки і хотів перенаправити за 404=filename
допомогою рядка запитів, тобто mysite.com?404=nonExistentFile.txt
.
Клавіші QueryString не можуть починатися з цифр. Перехід від 404
до FileNotFound
вирішити мою проблему, тобто mysite.com?FileNotFound=nonExistentFile.txt
.
HttpContext.Request.QueryString["404"]
.