我刚加入了一个开发asp.net mvc 1应用程序的团队。 我只安装了带有mvc 2的visual studio 2010。
我运行了转换向导,现在应用程序似乎无法编译
我得到的错误是
“无法将带有[]的索引应用于 表达式 “System.Web.Mvc.IValueProvider“
我在应用程序的不同位置出现此错误5次。
该行是
ModelState.SetModelValue(inputTagName, new ValueProviderResult(ValueProvider[inputTagName].AttemptedValue, file.FileName, System.Globalization.CultureInfo.CurrentCulture));
老实说,我不知道它在做什么,但我的同行(使用Mvc 1)不会有编译问题。
请帮忙。
答案 0 :(得分:2)
这是MVC 1和MVC 2之间(少数)重大变化之一.ValueProvider已完全重做以支持多个值提供程序,并且不再具有索引属性。简短的回答是将其更改为使用GetValue( inputTagName )
。更长(更好)的答案是更改代码以使用models作为操作方法输入,而不是直接在代码中将数据从值提供程序中提取出来。相反,您依靠模型绑定来访问值提供程序并在模型上设置属性。
答案 1 :(得分:0)
将ValueProvider[inputTagName].AttemptedValue
更改为ValueProvider.GetValue(inputTagName).AttemptedValue
。
请注意,您的整个团队应针对相同版本的ASP.Net MVC进行开发;除此以外;你会遇到很多麻烦。