【问题标题】:Pass RouteValueDictionary to Html.Action as QueryString将 RouteValueDictionary 作为 QueryString 传递给 Html.Action
【发布时间】:2012-08-20 17:00:26
【问题描述】:

我有一个看法:

@{
   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 作为 QueryString 传递给 Action“Count”吗?现在,我可以从以下位置获取值:

RouteData.Values 

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

【问题讨论】:

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


    【解决方案1】:

    查询字符串是空的,因为Countaction方法确实不是使用普通请求调用的,在URL中指定action的参数,而是直接在框架内,携带RouteData对象中的参数。

    因此,您应该使用RouteData 访问参数,正如您所写的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2020-06-10
      相关资源
      最近更新 更多