2010-02-24 3 views
2

Je migration récemment mon ASP.Net application MVC 1 de VS.Net 2008/C# 3.5 à VS.NET 2010/C# 4.0. J'ai utilisé massivement un générateur pour obtenir des chaînes d'URL à partir des appels fortement typés. Il ressemble à ceci:LinkBuilder.BuildUrlFromExpression ne fonctionne plus dans .Net 4/VS 2010?

// sample call : 
string toSamplePage = Url.To<SampleController>(c => c.Page(parameter1, parameter2)); 

le code est ajouté comme une extension de la valeur par défaut UrlHelper:

public static string To<Tcontroller>(UrlHelper helper, Expression<Action<Tcontroller>> action) where Tcontroller : Controller 
{ 
    // based on Microsoft.Web.Mvc.dll LinkBuilder 
    return LinkBuilder.BuildUrlFromExpression<Tcontroller>(helper.RequestContext, helper.RouteCollection, action); 
} 

Le seul problème de ce fait, est la référence à dll Microsoft.Web.Mvc , mais le gain de lisibilité en valait la peine.

Problème: cela ne marche plus, retourne (nul) quels que soient les paramètres.

Questions:

  1. est-il une meilleure façon de créer des liens maintenant d'une expression? (oui, j'ai essayé de google sans succès)

  2. Y at-il un truc pour que l'ancien LinkBuilder.BuildUrlFromExpression fonctionne? J'ai essayé de le recompiler en C# 4.0, mais le problème est qu'il implique de travailler sur ma propre version compilée de System.Web.Mvc qui n'est pas une option.

J'essaie actuellement de migrer vers MVC 2 mais j'ai encore des questions ... En attente de vos suggestions ...

Répondre

0

Oki, je trouve le problème.

J'ai eu des problèmes de versionnement d'assemblys. Après la reconstruction de Microsoft.Web.Mvc + unistalling MVC 1 + actualisation de toutes les références, il a finalement travaillé à nouveau. C'est nul parce que j'ai encore besoin de MVC 1 pour d'autres projets, mais au moins mon problème principal a été résolu.

Pour developpeurs nouveaux au framework MVC: envisager de commencer directement avec MVC 2/VS.Net 2010/C# 4.0

2

Notre équipe a surmonté ce problème identique par système de référence (Microsoft) .Web.Mvc 2.0.0.0 statiquement dans notre dossier de bibliothèques, par opposition à une référence GAC. Cela nous a permis de continuer à travailler avec des projets MVC 1.0.0.0 et nous a également donné l'avantage en aval de ne pas avoir à installer MVC 2 sur nos serveurs.