帮助将asp.net mvc 1迁移到mvc 2

时间:2010-07-29 17:59:48

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

我刚加入了一个开发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)不会有编译问题。

请帮忙。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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