Question

Je voudrais ignorer plusieurs itinéraires génériques.Avec asp.net mvc preview 4, ils sont livrés avec :

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

J'aimerais également ajouter quelque chose comme :

RouteTable.Routes.IgnoreRoute("Content/{*pathInfo}");

mais cela semble briser certains des assistants qui génèrent des URL dans mon programme.Pensées?

Était-ce utile?

La solution

Il y a ici deux solutions possibles.

  1. Ajoutez une contrainte à la route ignorer pour vous assurer que seules les demandes qui doivent être ignorées correspondent à cette route.Un peu compliqué, mais ça devrait marcher.

    RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new {folder="content"});
    
  2. Qu'y a-t-il dans votre répertoire de contenu ?Par défaut, Routing ne route pas les fichiers qui existent sur le disque (vérifie en fait le VirtualPathProvider).Ainsi, si vous placez du contenu statique dans le répertoire Content, vous n'aurez peut-être pas besoin de la route ignore.

Autres conseils

Cela peut être assez délicat.

Lorsqu'il tente de comprendre comment mapper les données d'itinéraire dans un itinéraire, le système effectue actuellement une recherche descendante jusqu'à ce qu'il trouve quelque chose où toutes les informations requises sont fournies, puis insère tout le reste dans les paramètres de requête.

Étant donné que les informations requises pour l'itinéraire "Content/{*pathInfo}" sont toujours entièrement satisfaites (aucune donnée requise dans cet itinéraire) et qu'elles se trouvent en haut de la liste des itinéraires, alors toutes vos tentatives de mappage vers des itinéraires sans nom seront correspondez à ce modèle, et toutes vos URL seront basées sur celui-ci ("Content?action=foo&controller=bar")

Malheureusement, il n'y a aucun moyen de contourner ce problème avec les itinéraires d'action.Si vous utilisez des routes nommées (par exemple, en choisissant Html.RouteLink au lieu de Html.ActionLink), vous pouvez spécifier le nom de la route à faire correspondre.C'est moins pratique, mais plus précis.

OMI, les itinéraires complexes font tomber le système de routage d'action.Dans les applications où j'ai autre chose que les routes par défaut, je finis presque toujours par revenir à la génération d'URL basée sur des routes nommées pour m'assurer d'obtenir toujours le bon itinéraire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top