IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Problème de routing [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 62
    Points : 133
    Points
    133
    Par défaut
    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 !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    Par défaut
    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é.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 62
    Points : 133
    Points
    133
    Par défaut
    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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    Par défaut
    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!

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 62
    Points : 133
    Points
    133
    Par défaut
    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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    Par défaut
    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

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 62
    Points : 133
    Points
    133
    Par défaut
    Hello,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    Par défaut
    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!

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 62
    Points : 133
    Points
    133
    Par défaut
    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 !

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    Par défaut
    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.

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 62
    Points : 133
    Points
    133
    Par défaut
    Et avec un autre navigateur ?

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 6
    Points
    6
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de route avec 2 cartes réseau-Dfault gateway
    Par zoltix dans le forum Administration
    Réponses: 5
    Dernier message: 05/12/2010, 13h50
  2. [1.x] Problème de routing en JS
    Par joris34 dans le forum Symfony
    Réponses: 3
    Dernier message: 16/07/2010, 11h48
  3. [CakePHP] Problème de routing ?
    Par herr_wann dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/12/2009, 20h40
  4. Mongrel : Problème de route
    Par DonKnacki dans le forum Ruby
    Réponses: 2
    Dernier message: 27/03/2009, 11h12
  5. Accès action impossible, problème de route?
    Par barnoufal dans le forum Ruby on Rails
    Réponses: 12
    Dernier message: 17/10/2008, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo