2009-01-18 8 views
4

j'ai l'itinéraire suivantASP.NET MVC - Routes et UrlHelper

routes.MapRoute(
    "GigDayListings",         // Route name 
    "gig/list/{year}/{month}/{day}",     // URL with parameters 
    new { controller = "Gig", action = "List" }, 
    new 
    { 
     year = @"^[0-9]+$", 
     month = @"^[0-9]+$", 
     day = @"^[0-9]+$" 
    } // Parameter defaults 
); 

Lorsque je visite l'URL

gig/list/2009/01/01 

Cet itinéraire correspond parfaitement et mon action est appelée.

intérieur mon avis, j'ai une aide qui effectue les opérations suivantes:

var urlHelper = new UrlHelper(ViewContext); 
string url = urlHelper.RouteUrl(ViewContext.RouteData.Values); 

La chaîne générée est:

http://localhost:3539/gig/list?year=2005&month=01&day=01 

Pourquoi est-ce pas

http://localhost:3539/gig/list/2005/01/01 

Qu'est-ce que je fais faux?

+0

L'URL que je visite est: http: // localhost: 3539/concert/liste/2005/01/01 Désolé pour la faute de frappe! – iasksillyquestions

Répondre

8

Je pense que votre problème est que vous n'avez pas spécifié le nom de l'itinéraire dans votre appel. Essayez d'utiliser

UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values); 

surcharge avec le nom de la route.

À la votre!

+0

Économiseur de vie. Merci – Matt

0

Avez-vous vérifié que lorsque vous fournissez gig/list/2008/01/01, il utilise réellement la route GigDayListings? Peut-être qu'il utilise un différent