将RouteValueDictionary传递给Html.Action作为QueryString

时间:2012-08-20 17:00:27

标签: asp.net-mvc asp.net-mvc-routing

我有一个观点:

@{
   RouteValueDictionary tRVD = new RouteValueDictionary(ViewContext.RouteData.Values);
   foreach (string key in sQS.Split('&'))
   {
       var itemArr = key.Split('=');
       tRVD[itemArr[0]] = itemArr[1];
   }
   tRVD["dtLastRequest"] = item.dtLastRequest;
   tRVD["uiSubscription"] = item.uiSubscription;
   tRVD["area"] = "";

}

@Html.Action("Count", "Search", tRVD)

使用15个键生成RouteValueDictionary&值,然后将它传递给Action“Count”,控制器“Search”,正如我想的那样?!

我不知道以前编写过这段代码的程序员,但是控制器的动作代码已满或者使用了Request.QueryString,但是现在,QueryString是空的。

是否真的可以将tRVD传递给Action“Count”作为QueryString?现在,我可以从以下方面获得价值:

RouteData.Values 

有我的键和值,但我不想更改以前编码器的代码并将所有内容从QueryString重写为RouteData。

1 个答案:

答案 0 :(得分:1)

查询字符串为空,因为Count操作方法实际上是在不使用普通请求的情况下调用的,在URL中指定了操作的参数,但直接在框架内,携带RouteData中的参数对象

所以你应该像你写的那样使用RouteData访问参数。