2011-03-01 4 views
0

Je viens de mettre à jour une application hybride WebForms/ASP.NET MVC 3 pour utiliser mvc3 et le moteur de vue rasoir. Tout semblait fonctionner correctement cependant, maintenant quand j'utilise Html.ActionLink() mes liens ne sont pas résolus correctement ou quelque chose?WebForms/Application ASP.NET MVC 3

Par exemple:

@Html.ActionLink("Create New", "Create") 

génère une balise d'ancrage comme celui-ci:

<a href="/?action=Create&amp;controller=Network">Create New</a> 

au lieu de ce que je pense:

<a href="/Network/Create">Create New</a> 

Voici la méthode d'action du contrôleur:

public class NetworkController : Controller { 
    public ActionResult Create() { 
     return View(new Network()); 
    } 
} 

Toutes les suggestions seraient géniales. Je vous remercie.

+0

Pourriez-vous montrer votre configuration de routage car elle est probablement liée à celle-ci. –

+0

Pourriez-vous inclure votre configuration de routage? Tout le monde qui google ou rencontre ce problème n'a pas assez d'informations de ce que vous avez fourni pour voir si elles ont le même problème. Cette question (sous sa forme actuelle) est inutile pour la communauté dans son ensemble. –

Répondre

1

Comme d'autres l'ont dit, il y a certainement quelque chose avec votre config d'itinéraire.

Le moteur de routage fait deux choses; il résout une URL en un ensemble de valeurs d'itinéraire (ce qui est ce qui se passe lorsque vous tapez/Réseau/Créer dans votre navigateur et il va à l'action de correction) et il résout un ensemble de valeurs d'itinéraire à une URL (ce qui arrive quand vous faites Génération d'URL comme dans un lien d'action). Les routes sont testées dans l'ordre, et la première qui déclare un match gagne, ce qui signifie que vous n'avez pas toujours le même résultat dans les deux directions si vous ne les avez pas configurées correctement.

Nous vous recommandons de tester les routes avec les aides à la route MVCContrib, ce qui peut vous aider à affiner votre problème. En outre, c'est généralement une mauvaise pratique (ou du moins peu fiable) de s'appuyer sur les valeurs de route «ambiantes», comme l'a suggéré @Chad Moran, si vous choisissez l'une des surcharges plus explicites d'ActionLink.

0

Avez-vous veillé à ce que tout soit configuré correctement avec le routage? Cela semble indiquer qu'aucune route n'a été trouvée où controller et action étaient des routes suffisantes.

+0

Si je tape/Réseau/Créer, j'obtiens le bon formulaire de création. –

+0

Copiez et collez l'enregistrement de la route (par défaut, ce sera dans votre global.asax) – smartcaveman

0

Puisque vous ne fournissez pas le paramètre Controller de la méthode, il est basé sur le contexte. Cet appel est-il dans le contexte d'un autre contrôleur?

Try this ...

@ Html.ActionLink ("Créer un nouveau", "Créer", "Réseau")