2010-09-02 1 views
0

Je suis en train de gérer l'URL suivante: domain.com, (2) domain.com/?latestComment ajouter la route et poignée domain.com/?latest

(1) Voilà ce que je qui devrait être ... il

Global.asax

routes.MapRoute(
    "HomeIndex", // Route name 
    "/?{sortBy}", // URL with parameters 
    new { controller = "Home", action = "Index", sortBy = UrlParemeter.Optional } // Parameter defaults 
); 

HomeController.cs

public ActionResult Index(string sortBy) { 
    if (string.IsNullOrEmpty(sortBy)) 
     // display stuff in a way that's sorted 
    else 
     // just display stuff by default 
    return View(...); 
} 

Problème: mvc n'aime pas l'itinéraire commençant par un "?" Codé en dur, mais !, si vous ne mappez pas un itinéraire du tout et recherchez simplement request.querystring ["latest"], il apparaît comme nul.

Quelle est la meilleure façon d'y parvenir? Merci!

------- Edit:?

Je sais que je ne devrais pas utiliser juste/latest et je dois plutôt utiliser/sortBy = dernière, mais il est une URL plus courte !! ! 1 et plus facile à taper :) Je vois que Google l'utilise parfois, et je veux être comme Google;)

Mis à part le fait que ce n'est pas la meilleure façon de le faire, y at-il un moyen de faire/? dernier? Merci!

Répondre

2

Votre chaîne de requête est incomplète. Essayez ceci: domain.com/?sortBy=latest. Vous pouvez également supprimer le mappage d'itinéraire supplémentaire et utiliser le routage par défaut.

0

Vous n'avez pas vraiment besoin de trier dans votre définition d'itinéraire. Assurez-vous simplement que la méthode action a un argument avec le même nom.

routes.MapRoute(
    "HomeIndex", // Route name 
    "", // URL with parameters 
    new { controller = "Home", action = "Index" } // Parameter defaults 
); 

Et oui, dans votre itinéraire la partie ?latest n'est pas correct. Il devrait toujours être sous la forme ?varname=varvalue.

+0

mais je vois Google faire ça! il est plus facile de taper :) J'essaie d'éviter de faire la valeur? key = pour garder l'url plus courte. est-ce possible? Merci! –

+1

Ensuite, vous pouvez essayer de vérifier si la chaîne de requête contient 'latest': Request.QueryString.Contains ("latest") (ou commence par). – Jeroen