我之前在使用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]);
反而。
但我仍然对为什么它在版本之间发生变化感兴趣。