如何在控制器动作中处理动态数量的参数?

时间:2019-03-28 12:46:27

标签: c# asp.net-mvc

我在ASP.NET MVC视图中托管iframe,并且必须将某些参数传递到此iframe的{​​{1}} url。这些采用简单的字符串/字符串键值对的形式,例如src

目标是让我自己的控制器操作的URL决定这些参数将是什么。基本上是这样的:

  1. 用户转到http://test.test?param1=value1&param2=value2
  2. 我收到的是http://www.myapp.com/MyController/Index?param1=value1&param2=value2
  3. 我认为,我根据public ActionResult Index(Dictionary<string, string> dynamicParameters)包含的内容来构建iframe的URL。如果使用其他参数,不同的值调用该操作,则……这些都将干净地传递到此dynamicParameters

我在第1步和第2步时遇到问题。我不确定该网址应采用哪种格式(我在其他地方使用iframe来构建此url作为记录),而且我不确定如何在控制器的操作中接收参数。

我用Url.Action()dynamicdynamic[]等尝试了几种不同的方法,到目前为止还算不上运气。像这样完全有可能吗?

1 个答案:

答案 0 :(得分:3)

当参数是高度动态的时,不需要在action方法的签名中声明它们-而是可以通过Request.QueryString访问它们。对于Url.Action,您可以传递Dictionary<string, object>作为路由值集合。其中包含的任何与声明的路由参数都不匹配的参数都应附加到查询字符串中。