2010-12-12 17 views
1

Bien que le titre dit, j'ai un projet avec un groupe de Html.ActionLinkMVC Html.ActionLink ne fonctionne pas après mise à jour de .net 3,5 à 4,0

<%= Html.ActionLink("Reason for booking", "BookingReason")%> 

J'ai mis à jour le projet. net 4.0 et ils ne rendent plus un lien vers l'action. C'est juste un blanc qui provoque le rechargement de la page.

Les balises Html.ActionLink se trouvent dans un contrôle utilisateur (ascx) dans le dossier partagé d'une zone.

J'ai essayé de revenir à la version .net 3.5 et cela fonctionne - bizarre. des idées?

Thx

+0

Quel HTML est rendu par le 'ActionLink' lorsque vous mettez à niveau vers .NET 4.0 et en quoi diffère-t-il du HTML généré sous .NET 3.5? –

+0

Oui - im .net 3.5 Je reçois le lien avec le href à l'action avec, en .net 4 je reçois rien ... m'envoie à l'itinéraire du site. – SteveCl

+0

a également essayé Url.Action et même. Je voulais dire la racine du contrôleur si http: // site/controller / – SteveCl

Répondre

0

Classé.

J'avais besoin d'avoir un itinéraire par défaut au-dessus de mes coutume ... l'ai enlevé à un certain point.

Toujours bizarre comment cela fonctionne dans .NET 3.5 et non 4.

context.MapRoute(
      "Name", 
      "AreaName/{action}", 
      new { controller = "defaultController", action = "defaultAction" } 
     ); 
1

Assurez-vous de marquer votre option params avec UrlParameter.Optional

  routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

C'était le problème pour nous (symptômes que la vôtre).

- Édité Ce n'était pas le seul problème. Lors de la migration vers MVC 3, vous pouvez obtenir problème suivant, supposons que vous aviez cette route (id et page étaient en option)

  routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}/{page}", // URL with parameters 
      new { controller = "Home", action = "Index", id = "", page = "" } // Parameter defaults 
     ); 

maintenant vous devez le diviser à 2 voies différentes:

 routes.MapRoute(
      "Paged",              // Route name 
      "{controller}/{action}/{id}/{page}", 
      new { controller = "Home", action = "Index", page = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default",              // Route name 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional}//, page = UrlParameter.Optional } // Parameter defaults 
     ); 
0

votre question a été la réponse pour moi .. :)

Eh bien la solution pour travailler <%= Html.ActionLink("Reason for booking", "BookingReason")%> est

  • En 3.5, il fonctionne avec <%= Html.ActionLink("Reason for booking", "BookingReason")%>
  • dans la version 4.0 fonctionne avec <%: Html.ActionLink("Reason for booking", "BookingReason")%>

Différence: 3,5 - "=" et 4.0 - ":"

espoir qui résout votre problème aussi