【发布时间】:2010-11-07 05:18:48
【问题描述】:
在asp.net mvc中,我使用的是这段代码:
RedirectToAction("myActionName");
我想通过查询字符串传递一些值,我该怎么做?
【问题讨论】:
标签: c# asp.net-mvc url-redirection
在asp.net mvc中,我使用的是这段代码:
RedirectToAction("myActionName");
我想通过查询字符串传递一些值,我该怎么做?
【问题讨论】:
标签: c# asp.net-mvc url-redirection
任何不属于路由的值都将用作查询字符串参数:
return this.RedirectToAction
("myActionName", new { value1 = "queryStringValue1" });
会返回:
/controller/myActionName?value1=queryStringValue1
假设没有名为“value1”的路由参数。
【讨论】:
对于像我这样希望将 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 对象
【讨论】:
还可以考虑使用T4MVC,它具有扩展方法AddRouteValue() 和AddRouteValues()(如setting query string in redirecttoaction 上的这个问题所示)。
【讨论】:
不要重蹈我的覆辙。我正在处理 404 错误并想在查询字符串中使用404=filename 重定向,即mysite.com?404=nonExistentFile.txt。
QueryString 键不能以数字开头。从404 更改为FileNotFound 解决了我的问题,即mysite.com?FileNotFound=nonExistentFile.txt。
【讨论】:
HttpContext.Request.QueryString["404"].