2010-07-29 48 views
2

我刚刚加入了开发asp.net mvc 1应用程序的团队。 我只有Visual Studio 2010中安装了带有MVC 2帮助将asp.net mvc 1迁移到mvc 2

我跑的转换向导,现在似乎没有应用程序编译

我得到的错误是

“无法适用索引用[]到 表达型的 “System.Web.Mvc.IValueProvider”

我得到这个误差的5倍于该应用程序的不同的地方。

该生产线是

ModelState.SetModelValue(inputTagName, new ValueProviderResult(ValueProvider[inputTagName].AttemptedValue, file.FileName, System.Globalization.CultureInfo.CurrentCulture)); 

说实话,我已经什么它做什么,但我的同龄人(使用MVC 1)不知道不有麻烦编译。

请帮忙。

回答

2

这是MVC 1和MVC 2之间少数突破性变化之一。ValueProvider已完全重做以支持多个值提供程序,并且不再具有索引属性。简短的答案是将其更改为使用GetValue(inputTagName)。更长的(也是更好的)答案是将代码更改为使用models作为您的操作方法输入,而不是直接在代码中将数据从值提供程序中提取出来。相反,您依赖模型绑定来访问值提供程序并设置模型的属性。

0

ValueProvider[inputTagName].AttemptedValue更改为ValueProvider.GetValue(inputTagName).AttemptedValue

请注意,您的整个团队应该针对相同版本的ASP.Net MVC进行开发;除此以外;你会遇到很多麻烦。

+0

谢谢,虽然我会尝试使用tvanfosson的建议正确地修复它 – ignaciofuentes 2010-07-29 19:06:46