0

J'ai deux voies:MAPROUTE, querystings et mvc

routes.MapRoute(
      "FetchVenue",          
      "venue/fetchlike/{q}",          
      new { controller = "venue", action = "fetchlike" }  
     ); 

     routes.MapRoute(
      "venue",           
      "venue/{venueId}",         
      new { controller = "Venue", action = "Index" } 
); 

L'URL/lieu/fetchlike/test est transmis au contrôleur correct L'URL/lieu/fetchlike/q = test est cependant passé à? l'action d'index.

Je souhaite pouvoir transmettre des données en tant que chaîne de requête.

Qu'est-ce que je fais mal?

Répondre

2

Situé juste à côté du haut de ma tête, ne devrait pas votre URL ressembler à /venue/fetchlike?q=test, au lieu de /venue/fetchlike/?q=test

+0

/lieu/fetchlike? Q = test carte toujours à la « lieu » d'itinéraire nommé Stumped :( – iasksillyquestions

3

En fait, le problème est que la route:

routes.MapRoute("FetchVenue", "venue/fetchlike/{q}", new { controller = "venue", action = "fetchlike" }); 

aurait en fait dû:

routes.MapRoute("FetchVenue", "venue/fetchlike", new { controller = "venue", action = "fetchlike" }); 

Signification que l'URL aurait été:

/lieu/fetchlike? Q = test

comme suggéré ci-dessus par strelokstrelok. Ainsi, dans le cas de paramètres de recherche, vous ne les définissez pas dans la route!

+2

Exactement! Itinéraires ne doivent pas avoir des paramètres de chaîne de requête en eux. Pour les besoins de la recherche d'itinéraire, chaîne de requête est ignorée Lors de la génération d'URL, nous ajoutons des paramètres fournis supplémentaires à la chaîne de requête. – Haacked