2011-05-23 3 views
2

mon URL actuelle est quelque chose comme ça =>http://localhost:4330/Restaurants/?Location=Manchester&Cuisine=0&NetProfit=0&Turnover=0&MaxPrice=120000&SortPriceBy=Low&Page=0de routage d'URL dans MVC 3

je veux faire quelque chose comme ça =>http://localhost:4330/Restaurants/Manchester/?Cuisine=Chinese&MaxPrice=120000

Où chaîne Param requête qui ne marche pas avoir des valeurs (0) ne être inclus dans la chaîne de requête URL Est-ce possible?

+0

Si vous voulez masquer certains paramètres à afficher en tant que chaîne de requête, vous pouvez simplement les passer via d'autres méthodes, par exemple des valeurs de formulaire. – melaos

Répondre

1

Essayez d'ajouter ajouter l'itinéraire correspondant:

routes.MapRoute(
    "Restaurants", 
    "Restaurants/{city}", 
    new { controller = "Restaurants", action = "Index", city = UrlParameter.Optional } 
); 

qui tracerait à l'action Index sur le contrôleur Restaurants:

public ActionResult Index(string city) 
{ 
    ... 
} 
5

MISE À JOUR

stringAdd à ce Global.asax routes

  routes.MapRoute(
       "Name of route", // Route name 
       "Restaurants/{cityid}/", // URL with parameters 
       new { controller = "Restaurants", action = "Index" } // Parameter defaults 
      ); 

C'est contrôleur:

public ActionResult Index(string city, int cuisine = 0, int ChineseMaxPrice=0) 
{ 
    Return View(); 
} 

Comme cuisine int = 0 - cet ensemble la valeur par défaut au paramètre si ce paramètre est pas défini dans querystring

ville string - est un paramètre qui doit être en string (non optionnel)

+0

Ce parcours n'est-il pas un double-joker? il correspond à n'importe quel contrôleur qui a une action ..? Ou est la clause 'new' où vous spécifiez le contrôleur spécifique et l'action? –

+0

désolé, j'ai fait une petite erreur/mise à jour. C'est une route supplémentaire –