Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Web avec .NET > ASP.NET MVC
ASP.NET MVC Forum d'entraide sur le développement de site web avec le framework ASP.NET MVC.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2012, 17h45   #1
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Par défaut Problème de routing

Bonjour,

J'ai suivi le petit tuto sur le routing (http://dotnet.developpez.com/mvc/mvc...-custom-route/)
mais je ne comprend toujours pas je fais exactement pareil que l'exemple et ça ne marche pas!

Voila le contenu de ma méthode RegisterRoutes dans Global.asax.cs
Code :
1
2
3
4
5
6
7
8
9
10
11
routes.MapRoute(
                "RoutingTest", 
				"test/{test}",
                new { controller = "Home", action = "Test", test=UrlParameter.Optional }      
            );
 
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
Cette méthode est bien appelée dans Application_Start().

Voila le code de mon HomeController:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
 
        public ActionResult Test(string test)
        {
            if (test != null)
            {
                ViewBag.message = test;
            }
            return View();
        }
}
Si tape l'URL "http://localhost:56218/home/test" mon action est bien appelée alors que si je tape "http://localhost:56218/test" ou "http://localhost:56218/home/test/blabla", l'action n'est pas appelée.
ça fait des heures que je cherche je ne comprend pas ce qui ne va pas, j'ai pourtant l'impression d'avoir bien compris comment fonctionne le routing

Merci d'avance pour vos réponse je déprime la!
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 08h44   #2
Denis Huvelle
Membre actif
 
Homme Denis Huvelle
Développeur .NET
Inscription : novembre 2011
Messages : 62
Détails du profil
Informations personnelles :
Nom : Homme Denis Huvelle
Âge : 24
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 62
Points : 159
Points : 159
Hello,

Quand tu dis que l'action n'est pas appelée, tu as vérifié en mettant un break point dessus ? Car tu ne devrais pas avoir de problème...

Avec une URL telle que "/test/blabla" ton action "Test" sera appelée et le paramètre "test" vaudra "blabla". Par contre avec une URL comme "http://localhost:56218/home/test/blabla", l'action "Test" sera bien appelée mais le paramètre "test" sera null car cette route a un paramètre optionnel qui s'appelle "id" mais pas de paramètre appelé "test".

J'espère que ça te débloquera un peu !
Denis Huvelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 11h53   #3
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Ha pardon ce n'est pas "http://localhost:56218/home/test/blabla" que j'ai testé mais bien "http://localhost:56218/test/blabla" (erreur de copier-coller).

Oui j'ai bien sûr mis des break point pour tester.

Du coup toujours bloqué.
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 12h00   #4
Denis Huvelle
Membre actif
 
Homme Denis Huvelle
Développeur .NET
Inscription : novembre 2011
Messages : 62
Détails du profil
Informations personnelles :
Nom : Homme Denis Huvelle
Âge : 24
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 62
Points : 159
Points : 159
Citation:
Envoyé par koenigsbier Voir le message
Ha pardon ce n'est pas "http://localhost:56218/home/test/blabla" que j'ai testé mais bien "http://localhost:56218/test/blabla" (erreur de copier-coller).

Oui j'ai bien sûr mis des break point pour tester.

Du coup toujours bloqué.
J'essaye "/test/blabla" avec le même code que toi et ça fonctionne très bien
Denis Huvelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 13h07   #5
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Citation:
J'essaye "/test/blabla" avec le même code que toi et ça fonctionne très bien
Hein sérieusement? moi ça retourne un 404, et c'est pas une histoire de cache ou quoi...
Ha mais la je suis encore plus déprimé qu'avant, pourquoi chez toi ça marcherai et pas chez moi!
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 13h58   #6
Denis Huvelle
Membre actif
 
Homme Denis Huvelle
Développeur .NET
Inscription : novembre 2011
Messages : 62
Détails du profil
Informations personnelles :
Nom : Homme Denis Huvelle
Âge : 24
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 62
Points : 159
Points : 159
Peux-tu uploader une archive de ton projet ? S'il ne contient rien de sensible ou du code que tu ne veux pas partager bien sûr
Denis Huvelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 14h18   #7
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Citation:
Envoyé par Denis Huvelle Voir le message
Peux-tu uploader une archive de ton projet ? S'il ne contient rien de sensible ou du code que tu ne veux pas partager bien sûr
voila le lien dropbox. https://www.dropbox.com/sh/lm4s1emkqhv17ht/Todc92krYk
Merci beaucoup Denis
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 15h15   #8
Denis Huvelle
Membre actif
 
Homme Denis Huvelle
Développeur .NET
Inscription : novembre 2011
Messages : 62
Détails du profil
Informations personnelles :
Nom : Homme Denis Huvelle
Âge : 24
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 62
Points : 159
Points : 159
Hello,

Le problème était assez simple : tu as rajouté

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void RegisterRoutes(RouteCollection routes)
        {
 
            routes.MapRoute(
                "RoutingTest",
                "test/{test}",
                new { controller = "Home", action = "Test", test = UrlParameter.Optional }
            );
 
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
 
 
        }
Dans ton Global.asax.cs et n'est jamais utilisé alors que tu as gardé

Code :
1
2
3
4
5
6
7
8
9
10
protected void Application_Start()
        {
           /* AreaRegistration.RegisterAllAreas();
 
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);*/
            RouteConfig.RegisterRoutes(RouteTable.Routes);
           /* BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();*/
        }
Avec RouteConfig.RegisterRoutes(RouteTable.Routes); non commenté qui se contentait d'enregistrer la "route par défaut" d'ASP.NET MVC.

Je te conseille donc de supprimer ton RegisterRoutes du Global.asax.cs et de t'occuper des routes dans RouteConfig.cs
Denis Huvelle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/11/2012, 15h40   #9
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Ha MERCI !!!

je croyais que RouteConfig.RegisterRoutes appellait la méthode RegisterRoutes dans mon Global.asax mais en fait ce n'est pas la même!

Je préfère continuer a enregistrer mes routes dans Global.asax, je trouve que c'est plus simple et rapide a trouver pour enregistrer mes routes.

Encore merci Denis!
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 15h42   #10
Denis Huvelle
Membre actif
 
Homme Denis Huvelle
Développeur .NET
Inscription : novembre 2011
Messages : 62
Détails du profil
Informations personnelles :
Nom : Homme Denis Huvelle
Âge : 24
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 62
Points : 159
Points : 159
Citation:
Envoyé par koenigsbier Voir le message
Ha MERCI !!!

je croyais que RouteConfig.RegisterRoutes appellait la méthode RegisterRoutes dans mon Global.asax mais en fait ce n'est pas la même!

Je préfère continuer a enregistrer mes routes dans Global.asax, je trouve que c'est plus simple et rapide a trouver pour enregistrer mes routes.

Encore merci Denis!
Comme tu le sens ;-) Content d'avoir pu t'aider !
Denis Huvelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 16h00   #11
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Par contre comportement très étrange

Quand je tape dans l'URL /test/blabla SANS appuyer sur entrer juste en écrivant ça dans l'URL et bien je rentre dans mon action test!!!!

Alors que si j'écris /test ou /test/ rien ne se passe.

Je redis bien que je n'envoie réellement aucune requette car je n'appuie pas sur entrer.
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 16h06   #12
Denis Huvelle
Membre actif
 
Homme Denis Huvelle
Développeur .NET
Inscription : novembre 2011
Messages : 62
Détails du profil
Informations personnelles :
Nom : Homme Denis Huvelle
Âge : 24
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 62
Points : 159
Points : 159
Et avec un autre navigateur ?
Denis Huvelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 16h13   #13
koenigsbier
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 13
Points : 4
Points : 4
Ha oui étrange ça ne fait ça qu'avec chrome. (Firefox, IE, et Opéra ça ne la fait pas)

Bon je vais utiliser firefox du coup, au pire si je ne trouve pas la réponse sur le web je créerai un autre topic.

Bonne soirée Denis et encore merci
koenigsbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h22.


 
 
 
 
Partenaires

Hébergement Web