Partage
  • Partager sur Facebook
  • Partager sur Twitter

Difference entre ASP.NET MVC et ASP.NET Core MVC

Routing

Sujet résolu
    24 septembre 2020 à 17:50:29

    Bonjour, je suis entrain de suivre le cours ASP.NET MVC, seulement je travail sur Visual studio 2019 avec ASP.Net Core MVC. 

    J'ai remarqué des différence notamment sur l'aspect routine.

    Sur le cour il est indiqué:

    sur le fichier RouteConfig.cs, se trouvant dans le répertoire App_Start.


    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }



    Sur ASP.NET Core, c'est un fichier différent Startup.cs

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseExceptionHandler("/Home/Error");
                    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                    app.UseHsts();
                }
                app.UseHttpsRedirection();
                app.UseStaticFiles();
    
                app.UseRouting();
    
                app.UseAuthorization();
    
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapControllerRoute(
                        name: "default",
                        pattern: "{controller=Home}/{action=Ajouter}/{id?}");
                });


    Sur la dernière ligne, dans le pattern il s'agit d'un seul paramètre "id", quand j’essaie d'ajouter une deuxième ça ne marche pas. Alors que dans le cours il suffit d'ajouter une valeur comme ici:

    https://openclassrooms.com/fr/courses/1730206-apprenez-asp-net-mvc/1828206-les-routes#/id/r-1828328

    routes.MapRoute(
        name: "Default",
        url: "Calculatrice-{action}/{valeur1}-{valeur2}",
        defaults: new { controller = "Calculateur", action = "Ajouter", valeur1 = 0, valeur2 = 0 });

    La méthode au niveau du controleur:

    public class CalculateurController : Controller
    {
        public string Ajouter(int valeur1, int valeur2)
        {
            int resultat = valeur1 + valeur2;
            return resultat.ToString();
        }
    }




    https://localhost:44359/Home/Ajouter/5/6 ne renvoie pas la somme dans mon cas.

    Votre aide serait la bienvenue.

    En fait j'ai trouvé, les identifiants que j'avait mis au niveau du contrôleur n'avaient pas le même nom, que ceux sur le fichier Startup.cs.

    -
    Edité par zmx89 25 septembre 2020 à 10:50:47

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2020 à 21:46:21

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: vb;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        25 septembre 2020 à 14:09:29

        si tu regardes bien le code de l'url de ta route, c'est un tiret "-" entre les deux valeurs et pas un "/" et dans le cours, ils indiquent bien " /Calculatrice-Ajouter/2-4"
        Donc si tu n'as pas modifié la route en mettant un "/" à la place du "-" c'est normal que ça ne marche pas avec "/Ajouter/5/6"
        • Partager sur Facebook
        • Partager sur Twitter
          29 septembre 2020 à 12:44:52

          Merci pour ta réponse, en fait les deux syntaxes sont possibles, au niveau du cours il est mentionné:

          "Par exemple, imaginons que nous souhaitions nous servir de notre application web comme d’une calculatrice et que l’URL suivante /Ajouter/5/11 nous affiche le résultat (hautement inédit) de 16. Il suffit de remplacer la route par :"

          routes.MapRoute(
              name: "Default",
              url: "{action}/{valeur1}/{valeur2}",
              defaults: new { controller = "Calculateur", action = "Ajouter", valeur1 = 0, valeur2 = 0 });

          "Il n’est bien sûr pas obligatoire de conserver le / pour séparer les fragments d’URL. Vous pouvez utiliser le délimiteur que vous souhaitez à partir du moment où deux fragments ne se retrouvent pas côte à côte, ce qui rendrait leur différenciation impossible. Par exemple, nous pourrions faire une route de cette forme :"

          routes.MapRoute(
              name: "Default",
              url: "{action}{valeur1}-{valeur2}",
              defaults: new { controller = "Calculateur", action = "Ajouter", valeur1 = 0, valeur2 = 0 });

          Dans mon cas j'ai utilisé la première syntaxe dans l'URL et dans la route:

           endpoints.MapControllerRoute(
                             name: "Ajouter",
                             pattern: "{controller}/{action}/{id?}/{id2?}");



          Comme je l'ai mentionné le problème venait du nom des paramètres, qui doit être le même et dans le contrôleur et dans la route:

          public string Ajouter(int id, int id2)
                  {
                      int resultat = id + id2;
                      return resultat.ToString();
                  }





          -
          Edité par zmx89 29 septembre 2020 à 12:47:04

          • Partager sur Facebook
          • Partager sur Twitter

          Difference entre ASP.NET MVC et ASP.NET Core MVC

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown