2010-11-22 3 views
0

J'essaie de migrer un projet MVC2 vers MVC3 - j'ai suivi les instructions dans les notes de version et l'application va compiler, mais le projet dépend de quelques aides situées à l'intérieur du MVCFutures et lancements précédents:Migration de MVC2 vers MVC3: problème avec MVCFutures

Message d'erreur du compilateur: CS1061: 'System.Web.Mvc.HtmlHelper' ne contient pas de définition pour 'SubmitImage' et aucune méthode d'extension 'SubmitImage' acceptant un premier argument de type 'System.Web .Mvc.HtmlHelper 'peut être trouvé (manque-t-il une directive using ou une référence d'assembly?)

Ma solution inclut un dossier Lib, à l'intérieur duquel est:

MVCFutures \ Microsoft.Web.Mvc.dll

Ai-je une option de mise à niveau ici?

+0

Avez-vous un ensemble de fixation redirection pour MVC 1,0-2,0 à 3,0? – marcind

+0

J'ai vérifié que j'ai le bindingRedirect spécifique. – justSteve

Répondre

0

Vous avez mentionné que votre binaire MVC à terme se trouve dans un dossier Lib. Assurez-vous que:

  1. Votre projet a une référence assesmbly à cette bibliothèque
  2. Le dll MvcFutures est copié dans le dossier bin
  3. Votre web.config a une référence d'assemblage à MvcFutures

Pourriez-vous également préciser si l'exception que vous voyez est lors de la compilation de votre application dans Visual Studio (car vous utilisez des méthodes à terme MVC dans vos contrôleurs ou modèles de données) ou lorsque vous accédez à votre application dans le navigateur. vos vues).

Btw, une version améliorée de MVC Futures qui cible MVC 3 sera bientôt disponible. Mise à jour: Le code source de MVC 3 Futures est déjà disponible sur codeplex: http://aspnet.codeplex.com/releases/view/58781 afin que vous puissiez le compiler vous-même.

+0

[s'en remet à l'autorité résidente] - les questions me conduisent à conclure que je suis le mieux à reconstruire le projet à partir d'une nouvelle liste de points de vue. à long terme, le plus efficace. THX – justSteve

1

@justSteve, Tout d'abord, vous pouvez télécharger la source de MVC3 de CodePlex, qui comprend le code MvcFutures, et juste construire vous-même l'ensemble des nouveaux contrats à terme.
Cependant, je serais prêt à parier que votre problème est une déclaration manquante using quelque part.

Assurez-vous que votre page comporte une instruction d'utilisation de l'espace de noms pour Microsoft.Web.Mvc. Si vous essayez de migrer vers Razor (ce que vous n'avez pas dit, mais juste au cas où), vous pouvez placer une référence d'espace de noms dans le fichier web.config contenu dans votre dossier Views (pour éviter d'avoir à inclure l'instruction à l'aide de chacun de vos points de vue), comme ceci:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Routing" /> 
      <add namespace="Microsoft.Web.Helpers" /> 
      ... 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor>