在asp.net mvc中,我正在使用以下代码:
RedirectToAction("myActionName");
我想通过查询字符串传递一些值,我该怎么做?
Answers:
传递的不属于路由的任何值都将用作查询字符串参数:
return this.RedirectToAction
("myActionName", new { value1 = "queryStringValue1" });
将返回:
/controller/myActionName?value1=queryStringValue1
假设没有名为“ value1”的路由参数。
还可以考虑使用T4MVC,它具有扩展方法AddRouteValue()
和AddRouteValues()
(如关于在redirecttoaction中设置查询字符串的问题所示)。
不要犯与我相同的错误。我正在处理404错误,并想使用404=filename
querystring重定向,即mysite.com?404=nonExistentFile.txt
。
QueryString键不能以数字开头。从更改404
为FileNotFound
解决了我的问题,即mysite.com?FileNotFound=nonExistentFile.txt
。
对于像我这样希望将CURRENT查询字符串值添加到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对象