2010-07-29 7 views
2

Je viens de rejoindre une équipe qui développe une application asp.net mvc 1. Je ne visual studio 2010 installé qui vient avec mvc 2.Aide migration asp.net mvc 1 à mvc 2

J'ai couru l'assistant de conversion et maintenant l'application ne marche pas semblent compiler

L'erreur que je reçois est

« Impossible d'appliquer l'indexation avec [] à une expression de type « System.Web.Mvc.IValueProvider »

je reçois cette erreur 5 fois dans des endroits différents de l'application.

La ligne est

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

Pour être honnête, je n'ai pas la moindre idée de ce que son fait, mais mes pairs (en utilisant Mvc 1) n'avez pas du mal à compiler.

Aidez-nous s'il vous plaît.

Répondre

2

Ceci est l'un des (quelques) changements de rupture entre MVC 1 et MVC 2. Le ValueProvider a été complètement refait pour prendre en charge plusieurs fournisseurs de valeur et n'a plus de propriété d'index. La réponse courte est de changer cela pour utiliser GetValue(inputTagName). La réponse la plus longue (et la meilleure) est de changer le code pour utiliser models pour vos entrées de méthode d'action et ne pas extraire les données du fournisseur de valeur directement dans votre code. Au contraire, vous comptez sur la liaison de modèle pour accéder au fournisseur de valeur et définir les propriétés sur votre modèle.

0

Remplacez ValueProvider[inputTagName].AttemptedValue par ValueProvider.GetValue(inputTagName).AttemptedValue.

Notez que toute votre équipe devrait être en développement avec la même version de ASP.Net MVC; autrement; vous allez rencontrer beaucoup de problèmes.

+0

Merci, ça l'a corrigé bien que je vais essayer de le réparer correctement en utilisant la suggestion de tvanfosson – ignaciofuentes