2013-06-24 31 views
1

有没有办法可以将FormCollection表格复制到ExpandoObjectFormCollection to expandoObject

我会从第三方公司获得帖子。其他第三方将使用get,它们都以一个需要动态输入参数的方法结束。

谢谢!

回答

3

嘛,不是最优雅的代码(可能是更好的方法来做到这一点),但一种方式可能是这样的:

[HttpPost] 
public ActionResult Test(FormCollection collection) 
{ 
    dynamic expando = new ExpandoObject(); 
    var dictionary = (IDictionary<string, object>) expando; 

    foreach (var item in collection.AllKeys.ToDictionary(key => key, value => collection[value])) 
    { 
     dictionary.Add(item.Key, item.Value); 
    } 
    // your expando will be populated here ... 
    // do awesomeness 
} 

我希望这有助于(至少它可能会给你一个想法) 。

+0

我希望有更优雅的东西。如果没有人提出类似于一个在线(或两个)的东西,我会在几天后接受你的回答。 – Andreas

+0

为什么这个foreach?为什么不只是:dictionary = collection.AllKeys.ToDictionary(key => key,value => collection [value]); – Andreas

+0

由于字典实际上是expando,所以您需要复制其中的数据,您可以将其转换回实际的expando。 –