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 avec le Routing [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Par défaut Problème avec le Routing
    Bonjour
    je suis debutant dans le asp.net_MVC.
    J'ai essayé de crée une web MVC application qui navigue entre trois pages et pour cela j'ai crée 3 vue (home,product,about) et un controlleur (site)l’exemple est pris de "

    Le code du controlleur

    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 class SiteController : Controller
       {
           //
           // GET: /Site/
     
           public ActionResult GoTohome()
           {
               return View("Home");
           }
           public ActionResult AboutUs()
           {
               return View("About");
           }
           public ActionResult SeeProduct()
           {
               return View("Product");
           }
    Je suis sur que le problème est dans le routing.Je ne l 'ai pas bien saisi.quand je compile l'erreur"The view 'Home' or its master was not found. The following locations were searched"
    J'ai modifié le fichier Global.asax comme suit mais toujours le même problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     
                routes.MapRoute(
                     "Default", // Route name
                     "{controller}/{action}/{id}", // URL with parameters
                     new { controller = "Site", action = "GoTohome", id = UrlParameter.Optional } // Parameter defaults
                 );
    Merci pour votre aide

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut emplacement des vues
    Salut,

    L'erreur que tu as ne vient pas du routing mais de tes vues qui ne sont pas placées au bon endroit.

    Tu devrais avoir un dossier Views dans lequel se trouve un dossier Site et dedans une vue Home.aspx

    Et voila

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Par défaut
    Citation Envoyé par mermich Voir le message
    Salut,

    L'erreur que tu as ne vient pas du routing mais de tes vues qui ne sont pas placées au bon endroit.

    Tu devrais avoir un dossier Views dans lequel se trouve un dossier Site et dedans une vue Home.aspx

    Et voila
    Vous aviez raison ,cependant je n ai pas bien saisi.Ce que j ai compris moi du rooting est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     
                routes.MapRoute(
                     "Default", // Route name
                     "{controller}/{action}/{id}", // URL with parameters
                     new { controller = "Site", action = "GoTohome", id = UrlParameter.Optional } // Parameter defaults
                 );
    1-le nom de la route je peux l’appeler ce que je veux a part "default"
    2-le nom du controlleur est Site et je le mets dans (controller = "Site"),donc pourquoi ajouter un dossier site dans views?

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Le routing, sert à faire correspondre les url et les actions de tes controlleurs, uniquement. On les modifie pour faire de la réécriture d'url.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    routes.MapRoute(
                     "Default", // Route name
                     "{controller}/{action}/{id}", // URL with parameters
                     new { controller = "Site", action = "GoTohome", id = UrlParameter.Optional } // Parameter defaults
                 );
    => dans cette instruction , on définit la route par defaut, qui pour une url de la forme :
    localhost:53150/Admin/User/18015
    appelera l'action "User" du controlleur "AdminController" avec l'id "18015" . C'est une regex, donc pas besoin d'en définir pour chaque action.

    1-le nom de la route je peux l’appeler ce que je veux a part "default"
    => normalement tu n'as pas besoin d'ajouter d'autres routes

    2-le nom du controlleur est Site et je le mets dans (controller = "Site"),donc pourquoi ajouter un dossier site dans views?
    => car le routing sert uniquement à faire correspondre des url à des action/controlleur

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Par défaut
    car le routing sert uniquement à faire correspondre des url à des action/controlleur
    Je ne vois pas la necessité d'ajouter un dossier "Site" alors puisque le controlleur s appelle "SIte"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    new { controller = "Site", action = "GoTohome", id = UrlParameter.Optional } // Parameter defaults
                 );

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Ok, t'as pas l'air de pas vouloir comprendre que le routing n'a rien à voir avec la recherche des vues.

    Donc, tu n'as pas besoin dans ton cas d'ajouter d'autres routes:

    Voila ce que doit être ta méthode register routes (seulement et uniquement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     
                routes.MapRoute(
                     "Default", // Route name
                     "{controller}/{action}/{id}", // URL with parameters
                     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                 );
    => le controlleur "Home" et l'action "Index" sont les valeurs par défaut utilisées lorsque tu as en url :
    localhost:53150/
    sinon, ils sont remplacés par ceux présents dans ton url
    localhost:53150/Site/EditerUser/123
    Cela permet à mvc de trouver quelle action appeler depuis ton url, uniquement.
    Enfin, c'est un autre mécanisme (le viewengine) qui fait la correspondance avec les vues, et en natif, tu dois avoir une hiérarchie similaire entre les noms de tes controlleurs et les dossiers de tes vues.

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

Discussions similaires

  1. [1.x] Problème avec le routing
    Par Haikel22 dans le forum Symfony
    Réponses: 4
    Dernier message: 23/04/2012, 13h20
  2. Réponses: 8
    Dernier message: 20/01/2010, 18h40
  3. [1.x] Problème avec menu et routing
    Par laurent_m dans le forum Symfony
    Réponses: 6
    Dernier message: 18/11/2009, 13h10
  4. Problème avec les routes
    Par touriste57 dans le forum MVC
    Réponses: 2
    Dernier message: 12/08/2009, 12h23
  5. [4.0] Problème avec l'Url Routing
    Par Nadd dans le forum ASP.NET
    Réponses: 2
    Dernier message: 14/06/2009, 20h38

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