2009-11-14 4 views
1

J'ai testé quelques options avec Route Debugger mais pas de chance. Permettez-moi de décrire ce que je suis en train:Asp.Net Mvc Route problème

Je tous les itinéraires « traduit » comme suit (je avais besoin de traduire de l'anglais vers le Portugais et parfois simplifier):

routes.MapRoute("Article.Create", "cms/artigo/criar", 
       new { controller = "Article", action = "Create" }); 

Tout fonctionne. Depuis que j'ai toutes les routes définies, je pense que je n'ai pas besoin d'un par défaut. J'ai donc quelque chose comme:

// Other translation routes 
routes.MapRoute("Article.Create", "cms/artigo/criar", 
       new { controller = "Article", action = "Create" }); 
routes.MapRoute("Article.Edit", "cms/artigo/editar/{id}", 
       new { controller = "Article", action = "Edit", id = "" }); 
routes.MapRoute("Home.Index", "inicio", 
       new { controller = "Home", action = "Index" }); 
routes.MapRoute("Home.Contact", "contacto", 
       new { controller = "Home", action = "Contact" }); 

// Error Unknown 
routes.MapRoute("Error.Unknown", "erro", 
       new { controller = "Error", action = "Unknown" }); 

// Start 
routes.MapRoute("Start", "_Default.aspx", 
       new { controller = "Home", action = "Index" }); 

// Error NotFound 
routes.MapRoute("Catch.All", "{*path}", 
       new { controller = "Error", action = "NotFound", path = "" }); 

Si la racine passe par la mise en correspondance de traduction sans correspondance alors si elle est une affiche d'erreur inconnus uniquement « http://domain.com/erro »
Sinon essayez de faire correspondre Accueil/Index.
va enfin attraper tout itinéraire et afficher uniquement le chemin comme suit: "http://domain.com/the/invalid/path

Sur mon web.config j'ai:

<customErrors mode="On" defaultRedirect="~/Error/Unknown"> 
    <error statusCode="404" redirect="~/Error/NotFound" /> 
</customErrors> 

Ce qui se passe est quand je commence mon site, il va toujours à l'erreur NotFound et de ne pas commencer la page.

Qu'est-ce que je fais mal?

+0

Est serait beaucoup plus facile si vous pouviez éditer la question et modifier le code afin qu'il soit affiché sous forme de code. Cliquez sur le bouton 101010 et collez le code là – Luke101

+0

pourquoi ne mettez-vous pas en évidence votre code en utilisant le widget de code en question –

Répondre

0

Vous avez défini que la seule URL, qui pointe vers votre page d'accueil, est « ~/yourapp/_Default.aspx », mais l'url de votre départ est "" ~/yourapp/", qui sera correctement intercepté par votre route Catch.All. Vous devez modifier votre itinéraire de départ à ceci:

MapRoute("Start", "", new { controller = "Home", action = "Index" }); 

.: BTW Si vous voulez tester vos itinéraires unité, vous pouvez être intéressé par ceci: Unit testing ASP.NET MVC routes. I présente un banc d'essai pour tester les routes dans un style tabulaire - idéal si vous avez plusieurs routes possibles (exemple de code disponible).