2010-01-27 9 views
1

J'ai un projet qu'il avait été développé sous MVC1 et après il y a quelques mois je l'ai mis à jour dans MVC2.Méthode non trouvée: 'System.Web.Mvc.MvcHtmlString System.Web.Mvc.Html.LinkExtensions.RouteLink (System.Web.Mvc.HtmlHelper, System.String, System.Object)'

Tout allait bien, le jour où j'ai eu besoin de formater mon ordinateur.

Et que peut-il se passer avec un format? Je ne sais pas Rire

J'ai installé le MVC2 après la mise en forme, j'importe le projet existant, je le compile, et aucune erreur n'a été affichée pendant sa construction, mais à partir du moment où je l'ai téléchargé dans la production serveur, je reçois cette erreur.

Méthode non trouvée: 'System.Web.Mvc.MvcHtmlString System.Web.Mvc.Html.LinkExtensions.RouteLink (System.Web.Mvc.HtmlHelper, System.String, System.Object)' .

Je n'arrive pas à comprendre ce qui a causé le problème.

Certes, je suppose que c'est à voir avec MVC1 et je l'ai référencé, mais sans chance encore.

Theese sont les méthodes que le problème est venu de

public static string PagerLinks(this HtmlHelper htmlHelper, string controllerName, 
      string actionName, int pageCount, int pageIndex, string cssClass, string moreTextCssClass, 
      string currentPageCssClass, int totalProducts) { 
      return PagerLinks(htmlHelper, controllerName, actionName, pageCount, pageIndex, "First", 
       "Previous", "Next", "Last", "more pages", cssClass, moreTextCssClass, 
       currentPageCssClass, totalProducts); 
     } 

public static string PagerLinks(this HtmlHelper htmlHelper, string controllerName, 
      string actionName, int pageCount, int pageIndex, string firstPage, string previousPage, 
      string nextPage, string lastPage, string moreText, string cssClass, string moreTextCssClass, 
      string currentPageCssClass, int totalProducts) { 
      var builder = new StringBuilder(); 
      if (String.IsNullOrEmpty(controllerName)) 
       throw new Exception("controllerName and actionName must be specified for PageLinks."); 
      if (pageCount <= 1) 
       return String.Empty; 


      if (String.IsNullOrEmpty(cssClass)) builder.Append("<div>"); 
      else builder.Append(String.Format("<div class=\"{0}\">", cssClass)); 

      builder.Append(string.Format("{0} <b>{1}</b>", "total", totalProducts)); 
      builder.Append("<br />"); 

      if (pageIndex != 1) { 
       // first page link 
       builder.Append(
         htmlHelper.RouteLink("First", new { 
          controller = controllerName, 
          action = actionName, 
          id = 1 
         }, new { title = firstPage } 
              ) 
              ); 
//// 
/// 
more code 
/// 
/// 
} 

Voici la syntaxe d'appel

<%=Html.PagerLinks((string)ViewData["Controller"], "Page", (int)ViewData["TotalPages"], (int)ViewData["Page"], "theCssClass", "theMoreTextCssClass", "theCurrentPageCssClass", (int) ViewData["TotalProducts"])%> 

méthode PagerLinks intérieur existe cette ligne que je croyais que ce soit, comme l'erreur message dit, l'erreur.

htmlHelper.RouteLink("First", new {controller = controllerName,action = actionName,id = 1}, new { title = firstPage }) 

mais je reçois l'erreur que lorsque je l'appelle via

<%=Html.PagerLinks((string)ViewData["Controller"], "Page", (int)ViewData["TotalPages"], (int)ViewData["Page"], "theCssClass", "theMoreTextCssClass", "theCurrentPageCssClass", (int) ViewData["TotalProducts"])%> 

si je commente la ligne ci-dessus et l'a remplacée par la ligne ci-dessous juste pour le test, rien ne se passe

htmlHelper.RouteLink("First", new {controller = controllerName,action = actionName,id = 1}, new { title = firstPage }) 

Je vous remercie des suggestions

Répondre

0

Vérifier les refernces dans votre web.config et assurez-vous qu'il référence v2 pour System.Web.MVC.

+0

Toutes les références sont réduites à MVC2. Je vais essayer d'utiliser les contrats à terme MVC. Enfin, le problème se déclenchant sur ActionLink ou RouteLink mais seulement lorsque le HtmlHelper s'étend. J'espère que MVC futures pour donner une solution à mon problème – StrouMfios

0

j'ai eu moi-même la mise à jour de MVC1 lors de MVC2 sur:

<%=Html.ActionLink<AccountController>(a=>a.LogOut(),"Logout") %> 

Si vous utilisez MVC Futures (comme je l'ai fait dans ActionLink ci-dessus) ou MVC Contrib, ne pas oublier de mettre à jour ces à MVC2. Cela a sûrement résolu mon problème.

Bonne chance/Lasse

+0

Je vais mettre en œuvre cela. Permet de voir :) – StrouMfios

0

Quand j'ai eu ce problème, je mis à jour ma version du System.Web.MVC.dll dans C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies puis arrêté/redémarré mes serveurs web et tout allait bien avec le monde.

+0

J'ai passé de nombreuses heures à comprendre ce qui a causé cela et finalement je me rends compte que le fournisseur d'hébergement ne m'a pas fourni les détails corrects sur la version mvc. Ils avaient v.1. Quand je les ai suppliés de mettre à jour le mvc à v.2 tous les problèmes résolus. – StrouMfios

Questions connexes