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 routage sur les vues!


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Par défaut Problème de routage sur les vues!
    Bonjour,

    lorsque j'essaie de démarrer mon programme, celui-ci m'affiche une erreur, comme quoi il ne trouve pas ma page.
    Voici le message d'erreur:
    La ressource est introuvable.
    Description : HTTP 404. La ressource recherchée (ou l'une de ses dépendances) a peut-être été supprimée ou renommée ou bien elle n'est plus disponible temporairement. Vérifiez l'URL ci-après et assurez-vous qu'elle est correcte.

    URL demandée: /Views/My/Index.cshtml
    Voici l'arborescence de mon programme:
    Views
    =====> _Layout.cshtml
    =====> My
    ========>_produits.cshtml
    ========>AboutUs.cshtlml
    ========>ContactUs.cshtml
    ========>Index.cshtml
    ...

    Voici mon fichier Index.cshtml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @model LearningTennisClub.Models.Produit
    @{
        ViewBag.Title = "Home";
        Layout = "~/Views/_LayoutPage.cshtml";
    }
     
    <h2>This is my home page</h2>
    @Html.Partial("~/Views/My/_produit.cshtml", Model)
    Le fichier RouteConfig.cs:

    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
    18
    19
    20
    21
    22
    23
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
     
    namespace LearningTennisClub
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "My", action = "Index", id = UrlParameter.Optional }
                );
     
            }
        }
    }
    Mon fichier MyController.cs:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using LearningTennisClub.Models;
     
    namespace LearningTennisClub.Controllers
    {
        public class MyController : Controller
        {
            // GET: My
            public ActionResult Index()
            {
                Produit produit = new Produit()
                {
                    NomProduit = "Produit 175296",
                    CouleurProduit = "Rouge",
                    MarqueProduit = "Souregi",
                    PoidsProduit = "5kg",
                    TypeProduit = "Electronique"
                };
                return View(produit);
                //return View();
            }
     
            public ActionResult AboutUs()
            {
                return View("AboutUs");
            }
     
            public ActionResult ContactUs()
            {
                return View("ContactUs");
            }
     
            public ActionResult Facebook()
            {
                return View("Facebook");
            }
     
            public ActionResult Twitter()
            {
                return View("Twitter");
            }
        }
    }
    Pouvez-vous me dire d'où vient l'erreur?
    Merci d'avance de votre réponse.

    Mumu27

  2. #2
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 854
    Par défaut
    Bonjour,

    En dehors d'une histoire d'espaces, mais qui est due à l'outil du forum, la seule chose qui me choque est l'URL demandée.

    Je vois
    alors que l'URL demandée devrait être
    Du reste en visant cette adresse, ça peut être intéressant d'avoir un point d'arrêt sur la ligne 13 de MyController, pour voir où on va.

    Après si pendant que je suis là je peux faire un "commentaire pour rien", My c'est plutôt un nom qu'on donne sous VB, d'habitude. Mais peut-être y a-t-il quelque chose que j'ignore, et de toute manière ça devrait fonctionner quand même.

  3. #3
    Membre éclairé Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Par défaut Ne passe pas dans l'Index.cshtml!
    Le souci lorsque je mets un point d'arrêt dans la fonction Index de MyController, c'est qu'il ne s'arrête jamais dedans. Si je modifie l'URL manuellement en My/Index par contre il y rentre, mais si je le lance avec F5, il me relance sur l'URL Views/My/Index.cshtml et il ne rentre jamais dans la fonction Index du controller.

  4. #4
    Membre éclairé Avatar de mumu27
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 213
    Par défaut Fichier global.asax!
    Par contre il passe dans mon fichier global.asax:

    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
    18
    19
    20
    21
    22
    23
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
     
    namespace LearningTennisClub
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
               RouteConfig.RegisterRoutes(RouteTable.Routes);
            }
     
            protected void Session_End(object sender, EventArgs e)
            {
                LearningTennisClub.ContexteDAO.SupprimerContexte(Session.SessionID);
            }
        }
    }
    Et après il m'envoie sur l'URL: Views/My/Index.cshtml

  5. #5
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 854
    Par défaut
    Bon, ça doit être un détail dans un coin, qu'on ne voit pas si on va trop vite.
    Normalement, c'est le contrôleur qui appelle la vue, donc l'URL reste à ce qui est indiqué dans Route.config : contrôleur/action/id

    Et si on met des valeurs par défaut, la racine va sur les valeurs par défaut, qui n'apparaissent pas dans l'URL.

    Il m'a semblé que dans mon Route.config il y avait sensiblement la même chose.

    A toutes fins utiles je le mets, parce qu'il faut laisser passer un peu de temps, et après ça dépend si j'y pense.

    Donc là, en mettant juste localhost et le numéro de port, j'ai la liste des catégories :

    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
    18
    19
    20
    21
    22
    23
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
     
    namespace MVC009Plats
    {
    	public class RouteConfig
    	{
    		public static void RegisterRoutes(RouteCollection routes)
    		{
    			routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     
    			routes.MapRoute(
    				name: "Default",
    				url: "{controller}/{action}/{id}",
    				defaults: new { controller = "Categories", action = "Index", id = UrlParameter.Optional }
    			);
    		}
    	}
    }

  6. #6
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Citation Envoyé par mumu27 Voir le message
    Views
    =====> _Layout.cshtml
    =====> My
    ========>_produits.cshtml
    ========>AboutUs.cshtlml
    ========>ContactUs.cshtml
    ========>Index.cshtml
    ...

    Voici mon fichier Index.cshtml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @model LearningTennisClub.Models.Produit
    @{
        ViewBag.Title = "Home";
        Layout = "~/Views/_LayoutPage.cshtml";
    }
     
    <h2>This is my home page</h2>
    @Html.Partial("~/Views/My/_produit.cshtml", Model)
    C'est peut-être juste une faute de frappe dans le post, mais : _produit.cshtml ou _produits.cshtml ?

  7. #7
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 854
    Par défaut
    Effectivement on emploie plutôt le pluriel, d'habitude.
    Mais je m'aperçois que j'ai carrément oublié de demander sur quelle table est basé le contrôleur My, enfin du moins si il est basé sur une table.
    Et si on veut voir apparaître des produits, comment se fait-il qu'il n'y a pas de contrôleur ProduitsController ?
    Qu'est-ce qui se passe si dans la barre d'adresse on demande explicitement l'adresse (localhost:nnnn)/My/Index ?

Discussions similaires

  1. problème sur les vues
    Par soub dans le forum Forms
    Réponses: 4
    Dernier message: 06/10/2009, 11h33
  2. Problème de base sur les wxbutton
    Par Jokester dans le forum wxPython
    Réponses: 6
    Dernier message: 30/07/2006, 21h12
  3. [DOM] Problème d'accent sur les noms de fichier avec mon parseur
    Par ujoodha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 21h55
  4. question (peut-être idiote) sur les vues
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2003, 10h35

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