2010-04-07 15 views
0

J'ai remarqué un comportement étrange lors de l'utilisation de la méthode d'extension fortement typée HtmlHelper.ActionLink() de ASP.NET MVC 2 Futures. Quand je l'utilise pour créer un lien vers un contrôleur dans un domaine que je dois utiliser l'attribut suivant sur ce contrôleurFortement typé Html.ActionLink <T>() l'extension auxiliaire de MVC Futures ne fonctionne pas bien avec les zones

[ActionLinkArea("SomeArea")] 

Il relie correctement aux actions du contrôleur situé dans SomeArea de la zone par défaut. Le problème est lorsque je veux lier à une action du contrôleur situé dans la zone par défaut à partir de SomeArea. Le lien apparaît avec le préfixe "/ SomeArea /". La solution I utilise est:

[ActionLinkArea("")] 

sur le contrôleur sur tous les contrôleurs qui sont situés dans la zone par défaut (en utilisant l'héritage).

Cela semble étrange parce que, à mon avis, cela devrait être le comportement par défaut de cette méthode. En utilisant réflecteur .NET sur cette méthode d'extension, j'ai remarqué que l'erreur se trouve ici:

return helper.RouteLink(linkText, routeValuesFromExpression, new RouteValueDictionary(htmlAttributes)); 

Il est en fait le comportement par défaut du HtmlHelper.

+0

C'est par conception. Les zones sont collantes à elles-mêmes; Si vous voulez sauter d'une zone dans une autre zone, vous devez spécifier explicitement la nouvelle zone (ou non-zone). –

Répondre

2

Problème connu dans MVC 2 Futures - même cause sous-jacente que http://forums.asp.net/p/1535698/3732346.aspx.

De notre base de données interne, si vous voulez patcher le fichier et vous recompiler Futures MVC:

Le bug est LinkBuilder.cs, ligne 21. La méthode appel GetVirtualPath() devrait être GetVirtualPathForArea().

+0

Je pense que je vais le faire - merci! –