8

我之前在使用How can a formcollection be enumerated in ASP.NET MVC? 的实现,但现在我在 VS2010 和 MVC2 上抱怨:

错误 1 ​​无法将类型“System.Web.Mvc.IValueProvider”隐式转换为
'System.Collections.Generic.IDictionary'。一个
存在显式转换(您是否缺少演员表?) C:\~\ProjectMVC\Controllers\TheController.cs 行 ProjectMVC

代码是...

IDictionary<string, ValueProviderResult> tmpCollection = collection.ToValueProvider();

for (int j = 1; j <= noprops; j++)
            {
                string shopNmTmp =
                    (from t in tmpCollection
                     where t.Key.StartsWith(j + ".discount.sname." + j)
                     select t.Value.AttemptedValue).First();
                string shopCdTmp =
                    (from t in tmpCollection
                     where t.Key.StartsWith(j + ".discount.sref." + j)
                     select t.Value.AttemptedValue).First();
...

当我不看的时候发生了什么变化;这可以编译、工作和运行,在 MVC1 中没有问题;但不会在 2 中编译。

谢谢

更新

我在技术上只是使用以下方法解决了这个问题:

Dictionary<string, string> tmpCollection = collection.AllKeys.ToDictionary(k => k, v => collection[v]);

反而。

但我仍然对为什么它在版本之间发生变化感兴趣。

4

1 回答 1

14

我在技术上只是使用以下方法解决了这个问题:

Dictionary<string, string> tmpCollection = collection.
                                 AllKeys.ToDictionary(k => k, v => collection[v]);

收集后添加换行符。用于格式化

于 2010-06-16T10:46:24.867 回答