如何使用RedirectToAction方法添加查询字符串值?

mrb*_*lah 73 c# asp.net-mvc url-redirection

在asp.net mvc中,我使用的是这段代码:

RedirectToAction("myActionName");
Run Code Online (Sandbox Code Playgroud)

我想通过查询字符串传递一些值,我该怎么做?

Tal*_*joe 144

传递的任何不属于路径的值都将用作查询字符串参数:

return this.RedirectToAction
  ("myActionName", new { value1 = "queryStringValue1" });
Run Code Online (Sandbox Code Playgroud)

会回来:

/controller/myActionName?value1=queryStringValue1
Run Code Online (Sandbox Code Playgroud)

假设没有名为"value1"的路由参数.

  • 我认为答案意味着"假设没有名为'value1'的路由参数".否则,该值将进入生成的URL中的route参数位置,例如{controller}/{action}/{value1}将变为/ controller/myActionName/queryStringValue1而不是/ controller/myActionName?value1 = queryStringValue1. (3认同)

小智 8

对于像我这样希望将 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);
Run Code Online (Sandbox Code Playgroud)

如您所见,解决方案是使用RouteValueDictionary对象