如何在Action中将对象转换为RouteValueDictionary?

时间:2012-01-31 20:15:25

标签: asp.net-mvc model-view-controller object action asp.net-mvc-routing

如果需要,我需要能够将多个参数传递给一个动作。它们最终将被传递到第二个动作,它将知道细节(多少,它们被称为什么),但我的第一个动作不需要知道这一点,它只需要传递它们。所以我称之为第一个动作:

RedirectToAction("Action1", "Controller1", new {
                     dcontroller = "Controller2",
                     daction = "Action2",
                     dparameters = new { tabSelected = "1" }
                 })

dparameters被传递,但当我进入需要使用参数的动作时,我无法得到它们。该对象如下所示:

... dparameters [string[1]}
 [0]"{ tabSelected = 1 }"

但如果我尝试dparameters[0],我会收到错误

  

Cannot apply indexing with [] to an expression of type 'object'.

我也试过

RouteValueDictionary p = new RouteValueDictionary(dparameters);

创建了一个包含7个键/项对,p.Key[3] = SyncRootp.Value[3] = string[1]的p,我又回到了同一个问题。

1 个答案:

答案 0 :(得分:0)

根据Action1的签名,你可能会做这样的事情......

RedirectToAction("Action1", "Controller1", 
    new RouteValueDictionary {
        { "dcontroller", "Controller2" },
        { "daction", "Action2" },
        { "dparameters.tabSelected", "1" }
    }
)