升级到ASP.NET MVC 2 - formCollection.ToValueProvider()

时间:2010-08-20 07:35:10

标签: c# asp.net-mvc-2

我收到以下错误:

  

无法将IValueProvider类型隐式转换为IDictionary

当我尝试运行以下代码时:

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

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

当我使用.NET 4.0时,我必须这样做:

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

我想感谢@abatishchev指出差异。

答案 1 :(得分:0)

你做第二次,多余的字典查找:

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

很奇怪!

3.5 ToValueProvider()中的

返回IDictionary<string, ValueProviderResult>

但在4.0中 - 它会返回IValueProvider