2010-08-20 113 views
4

我收到以下错误:升级到ASP.NET MVC 2 - formCollection.ToValueProvider()

Cannot implicitly convert type IValueProvider to IDictionary

当我尝试运行下面的代码:

IDictionary<string, ValueProviderResult> valueProvider = formValues.ToValueProvider(); 
foreach (string k in formValues.Keys) 
{ 
    ModelState.SetModelValue(k, valueProvider[k]); 
} 

谁能帮助?

回答

1

由于我使用.NET 4.0,我不得不这样做:

IValueProvider valueProvider = formValues.ToValueProvider(); 
foreach (string k in formValues.Keys) 
{ 
    ModelState.SetModelValue(k, valueProvider.GetValue(k)); 
} 

我想要感谢@abatishchev指出差异。

+0

这是相当好删除这个答案,并编辑您的原始问题 – abatishchev 2010-08-20 09:51:11

+0

真的吗?我认为最好有问题的答案? – ddd 2010-08-20 10:12:30

+0

对不起,我只是不明白这是你自己的问题的答案!很高兴听到您找到解决方案。现在批准它 – abatishchev 2010-08-20 12:55:35

0

你做第二,多余的词典查询:

foreach (KeyValuePair<string, ValueProviderResult> pair in formValues) 
{ 
    ModelState.SetModelValue(pair.Key, pair.Value); 
} 

很奇怪!

3.5 ToValueProvider()返回 IDictionary<string, ValueProviderResult>

4.0

- 返回IValueProvider

+0

@dean:我更新了我的帖子。无论如何试图施展 - 什么结果? – abatishchev 2010-08-20 08:10:20

+0

@dean:你有铸造结果吗? – abatishchev 2010-08-20 09:51:26