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 Discussion :

Page introuvable - erreur 404 - Asp Net Mvc


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 212
    Par défaut Page introuvable - erreur 404 - Asp Net Mvc
    Bonjour,
    La vue "Détails" de mon contrôleur renvoie l'erreur 404.
    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
     
            public IActionResult MonArticle(long? id)
            {
                 if (id == null || _repo.GetArticleByID(id) == null)
                {
                    return NotFound();
                }
                var article = _repo.GetArticleByID(id);
     
                ViewBag.Nom = article.Nom.Replace(" ", "_");
     
                var description = article.Description;
                ViewBag.description = description.Replace("\n", "<br/>");
     
                List<Images> photos = _IMG_repo.GetImageByArticleID(id).OrderBy(x => x.Nom).ToList();
     
     
                ViewData["Photo"] = photos;
     
                return View(article);
            }
    C'est à dire que l'action 'MonArticle' n'est même pas activée.

    1) Si je ne fourni pas l'id dans l'adresse du navigateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://localhost:7105/Articles/MonArticle/
    l'action 'MonArticle(long? id)' est activée !
    Alors j'ai fourni une id valide en dur dans son code :
    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
            public IActionResult MonArticle(long? id)
            {
                 id = 70003;
                 if (id == null || _repo.GetArticleByID(id) == null)
                {
                    return NotFound();
                }
                var article = _repo.GetArticleByID(id);
    
                ViewBag.Nom = article.Nom.Replace(" ", "_");
       
                var description = article.Description;
                ViewBag.description = description.Replace("\n", "<br/>");
    
                List<Images> photos = _IMG_repo.GetImageByArticleID(id).OrderBy(x => x.Nom).ToList();
    
     
                ViewData["Photo"] = photos;
    
                return View(article);
            }
    'var article' se charge normalement avec toutes les données de la BdD (y compris les liens photos).
    sauf que 'return View(article)' ne renvoie rien, page blanche.

    2) J'ai supprimé la vue et je l'ai faite reconstruire automatiquement, vue Razor.
    Rien ne change. Erreur 404

    3) Clic droit sur la vue dans l'explorateur de solutions --> Afficher dans le navigateur
    La vue s'affiche AVEC toutes les données, sans les photos ( vue Razor de base)

    4) Je remplace le contenue de la vue Razor par mon code.
    Clic droit sur la vue dans l'explorateur de solutions --> Afficher dans le navigateur
    La vue s'affiche AVEC toutes les données, AVEC les photos ( serveur arrêté !! )

    5) L'appel normal de la vue est un lien dans une 'Card'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            <div class="card h-100 mx-2 mt-3" style="width: 16rem;">
                <img src="@Url.Content("~")/Upload/@item.VendeurName/@item.Crec_Ref/Thumbnails/@item.FirstImage" class="card-img-top" alt="..." href="#" />
                <div class="card-body">
                    <h6 class="card-title soussoustitre-ajout">@Html.DisplayFor(modelItem => item.Nom)</h6>
                    <p class="card-price titre-ajout">@Html.DisplayFor(modelItem => item.PrixPublic) €</p>
                    <a href="/Articles/MonArticle/@Html.DisplayFor(modelItem => item.Id)" class="stretched-link"></a>
                </div>
            </div>
    6) J'ai vérifié que le nom de l'action 'MonArticle' était correctement associé à la vue 'MonArticle'

    7) Je test avec Firefox et Brave. Idem

    8) Je possède un clone de l'appli (que je fais évoluer parallèlement, et dans lequel j'effectue divers tests), et ce clone fonctionne !

    9) J'ai arrêté et redémarré l'ordi.

    Bref, je n'y comprends rien du tout.
    Je ne sais plus où ni comment chercher.
    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 940
    Par défaut
    Certainement un problème de route.
    As-tu modifié les routes dans le Startup dans ce projet, que tu n'aurais pas modifié dans le projet clone ?

  3. #3
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 212
    Par défaut
    Ce serait effectivement une solution.
    Je n'ai pas de Startup dans mon environnement.
    Uniquement 'Program.cs'

    Et vous avez encore raison Popo.
    (Je vais finir par vous embaucher ! )

    il manquait '{id?}' dans mon pattern de route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                pattern: "{controller=Articles}/{action=MesArticles}");
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                pattern: "{controller=Articles}/{action=MesArticles}/{id?}");
    J'avais modifié cette ligne pour la page d'accueil.
    Merci !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/06/2015, 01h28
  2. Utiliser ASP.NET MVC pour un petit site web de 2-3 pages
    Par etiennegaloup dans le forum ASP.NET MVC
    Réponses: 7
    Dernier message: 06/12/2011, 10h35
  3. Réponses: 18
    Dernier message: 11/03/2010, 11h27

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