web-dev-qa-db-fra.com

Inclusion de valeurs de hachage dans les routes URL ASP.NET MVC

J'ai besoin d'implémenter une valeur de hachage, c'est-à-dire que l'URL devrait ressembler à ceci:

/ home/index/# create

Pour cela ont ajouté un itinéraire:

routes.MapRoute(
    "Default",    // Route name
    "{controller}/{action}/#{detail}",    // URL with parameters
    new { controller = "Login", action = "LogIn",  detail  =""}  // Parameter defaults
);

En accédant à /home/index/#create, il me redirige vers l'itinéraire par défaut.

Comment cela peut-il être fait?

54
facebook

Vous ne pouvez pas récupérer la valeur après le # symbole sur le serveur simplement parce que cette valeur n'est jamais envoyée au serveur. Seul javascript côté client a accès à cela, donc définir des itinéraires avec du hachage n'a pas beaucoup de sens.

51
Darin Dimitrov

Comme indiqué, il n'y a aucun moyen de le faire en utilisant le routage. La seule solution possible consiste à ajouter le fragment # à votre URL lors de la redirection dans les actions de votre contrôleur. Par exemple.

return Redirect(Url.Action("Index", "Home") + "#create");
107
Rory McCrossan

Lorsqu'un navigateur fait une demande d'URL, il n'envoie rien après un hachage au serveur. Cette route peut vous permettre de générer acheminer les URL contenant la valeur de hachage, mais il n'y a aucun moyen de faire quoi que ce soit côté serveur lorsque l'utilisateur accède à une telle URL. C'est comme ça que le web fonctionne ...

7
Robert Levy