Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation des view models

    5 octobre 2020 à 10:23:56

    Bonjour, j'ai fait une petite application qui me retourne une liste de film et me permet de modifier, cette application est un dérivé du cour sur 

    "https://openclassrooms.com/fr/courses/1730206-apprenez-asp-net-mvc/1828251-utiliser-les-controleurs"

    Du coup je vous explique un peut ce que je voulais faire. 

    donc j'ai regroupé tous mes classes models, et mes classes listes models, dans un répertoire viewModel => dans la classe catalogue.

    L'idée était de pouvoir tous les appeler a partir d'une même vue. Ca marche comme je voulais pour la methode "Index de mon controller",

    mais pour la méthode "Modifier_Media de mon controller", lorsque je lance l'appli, je peux modifier le film, mais le film modifier ne s'affiche pas......, et je ne sais pas pourquoi, 

    Ps: je suis vraiment debutant en dev en gros j'ai probablement un niveau (4/1000) donc c'est sur que mon code doit etre bourré d'erreur, je ne demande pas une correction archi pro avec des syntaxes que je ne pourrais pas comprendren je vous demande juste svp de m'expliquer, avec les éléments présent dans mon code, et surtout de me dire si ce que j'ai en tete deja est possible. (Je vais vous mettre toute mon application répertoire par répertoire) 

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    App_Data(Vide)

    _________________________________________________________________________________

    App_Start(RouteConfig)(non modfier)

    _________________________________________________________________________________

    Controllers => HomController.cs(le code suivant y est contenu)

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    using Netflix_7.Models;

    using Netflix_7.Models.BddContext_Entity;

    using Netflix_7.Models.DAL;

    using Netflix_7.ViewModels;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web.Mvc;


    namespace Netflix_7.Controllers

    {

        public class HomeController : Controller

        {

            BddContext bdd = new BddContext();

            IDal dal = new Dal();

            Cathalogue cathalogue = new Cathalogue();


            // GET: Home

            public ActionResult Index()

            {

                dal.Ajouter_Film("Avengers 1", "2012");

                dal.Ajouter_Film("Avengers 2", "2015");


                dal.Ajouter_Serie("Titan 1", "2018");

                dal.Ajouter_Serie("Titan 2", "2020");


                cathalogue.Films_Liste_VM = dal.Obtenir_tous_les_films();

                cathalogue.Series_Liste_VM = dal.Obtenir_toutes_les_series();



                return View(cathalogue);

            }


            public ActionResult Modifier_Media(int? id)

            {

                //if (id.HasValue)

                //{

                //    Film film = dal.Obtenir_tous_les_films().FirstOrDefault(a => a.ID == id.Value);

                //    Serie serie = dal.Obtenir_toutes_les_series().FirstOrDefault(a => a.ID == id.Value);


                //    if (film == null || serie == null)

                //    {

                //        return View("Error");

                //    }

                //    return View(film);

                //}

                //return View("Error");


                if (id.HasValue)

                {

                    cathalogue.Film_VM = dal.Obtenir_tous_les_films().FirstOrDefault(a => a.ID == id.Value);


                    Film film = new Film();

                    film = cathalogue.Film_VM;


                    if (film == null)

                    {

                        return View("Error");

                    }

                    return View(cathalogue);

                }

                return View("Error");

            }


            [HttpPost]

            public ActionResult Modifier_Media(Cathalogue cathalogue)

            {


                    dal.Modifier_Film(cathalogue.Film_VM.ID, cathalogue.Film_VM.Nom_Film, cathalogue.Film_VM.Annee_Film);


                    return RedirectToAction("Index");


            }

        }

    }

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    ______________________________________________________________________________________________________________________

    Models =>BddContext_Entity => BddContext.cs (Code ci dessous)

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;


    using System.Data.Entity;


    namespace Netflix_7.Models.BddContext_Entity

    {

        public class BddContext:DbContext

        {

            public DbSet<Film> Film_Bdd { get; set; }

            public DbSet<Serie> Serie_Bdd { get; set; }

        }

    }

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    ___________________________________________________________________________________________________________________

    Models => DAL => IDal (Code ci dessous) 

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;


    using Netflix_7.Models;

    using Netflix_7.ViewModels;


    namespace Netflix_7.Models.DAL

    {

        public interface IDal:IDisposable

        {

            void Ajouter_Film(string I_Nom_Film, string I_Annee_Film);

            void Ajouter_Serie(string I_Nom_Serie, string I_Annee_Serie);

            void Modifier_Film(int I_Id_Film, string I_Nom_Film, string I_Annee_Film);

            void Modifier_Serie(int I_Id_Serie, string I_Nom_Serie, string I_Annee_Serie);


            List<Film> Obtenir_tous_les_films();

            List<Serie> Obtenir_toutes_les_series();


        }

    }

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ______________________________________________________________________________________________________________
    Models => DAL => Dal.cs (Code ci dessous)
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    using System.Data.Entity;
    using Netflix_7.Models.BddContext_Entity;
    using Netflix_7.Models;
    using Netflix_7.ViewModels;

    namespace Netflix_7.Models.DAL
    {
        public class Dal : IDal
        {
            BddContext bdd;
            Cathalogue cathalogue;
            public Dal()
            {
                bdd = new BddContext();
                cathalogue = new Cathalogue();
            }

            public void Ajouter_Film(string I_Nom_Film, string I_Annee_Film)
            {
                bdd.Film_Bdd.Add(new Film { Nom_Film = I_Nom_Film, Annee_Film = I_Annee_Film });
                bdd.SaveChanges();
            }

            public void Ajouter_Serie(string I_Nom_Serie, string I_Annee_Serie)
            {
                bdd.Serie_Bdd.Add(new Serie { Nom_Serie = I_Nom_Serie, Annee_Serie = I_Annee_Serie });
                bdd.SaveChanges();
            }

            public void Dispose()
            {
                bdd.Dispose();
            }

            public void Modifier_Film(int I_Id_Film, string I_Nom_Film, string I_Annee_Film)
            {
                cathalogue.Film_VM = bdd.Film_Bdd.FirstOrDefault(Id => Id.ID == I_Id_Film);

                if (cathalogue.Film_VM!= null)
                {
                    cathalogue.Film_VM.Nom_Film = I_Nom_Film;
                    cathalogue.Film_VM.Annee_Film = I_Annee_Film;

                }
                bdd.SaveChanges();
            }

            public void Modifier_Serie(int I_Id_Serie, string I_Nom_Serie, string I_Annee_Serie)
            {
                Serie serie = bdd.Serie_Bdd.FirstOrDefault(Id => Id.ID == I_Id_Serie);
                if(serie != null)
                {
                    serie.Nom_Serie = I_Nom_Serie;
                    serie.Annee_Serie = I_Annee_Serie;
                }
                bdd.SaveChanges();
            }

            public List<Film> Obtenir_tous_les_films()
            {

                Cathalogue cathalogue = new Cathalogue();
                cathalogue.Films_Liste_VM = bdd.Film_Bdd.ToList();

                return cathalogue.Films_Liste_VM.ToList();
            }

            public List<Serie> Obtenir_toutes_les_series()
            {
                return bdd.Serie_Bdd.ToList();
            }
        }
    }

    _____________________________________________________________________________________________________________

    Models => Film.cs (code ci dessous)
    """"""""""""""""""""""""""""""""""""""""""""""""""""
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace Netflix_7.Models
    {
        public class Film
        {
            public int ID { get; set; }
            public string Nom_Film { get; set; }
            public string Annee_Film { get; set; }
        }
    }
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ____________________________________________________________________________________________________________
    Models => Serie.cs
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace Netflix_7.Models
    {
        public class Serie
        {
            public int ID { get; set; }
            public string Nom_Serie { get; set; }
            public string Annee_Serie { get; set; }
        }
    }
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    _________________________________________________________________________________________________________
    Model => Inittialisation.cs (Code ci dessous) 
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    using Netflix_7.Models.BddContext_Entity;
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;

    namespace Netflix_7.Models
    {
        public class Initialisation : DropCreateDatabaseAlways<BddContext>
        {
            protected override void Seed(BddContext context)
            {
                base.Seed(context);
            }
        }
    }
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    __________________________________________________________________________________________________
    ViewModels = > Cathalogue.cs (Code ci dessous) 
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    using System.Data.Entity;
    using Netflix_7.Models.BddContext_Entity;
    using Netflix_7.Models;
    using Netflix_7.Models.DAL;


    namespace Netflix_7.ViewModels
    {
        public class Cathalogue
        {
            public Film Film_VM { get; set; }
            public Serie Serie_VM { get; set; }
            public List<Film> Films_Liste_VM { get; set; }
            public List<Serie> Series_Liste_VM { get; set; }
        }
    }
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ____________________________________________________________________________________________________________________
    Views => Home => Index.cshtml
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    @model Netflix_7.ViewModels.Cathalogue

    @{
        Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <style type="text/css">
            table{
                border-collapse: collapse;
            }

            th, td {
               border: 2px solid blue;
            }
        </style>

    </head>
    <body>
        <div>
            NETFLIX_ 7
        </div>

        <table>
            <tr>
                <th>Nom du film</th>
                <th>Annee de sortie du film</th>
                <th>Modifier le film</th>
            </tr>

            @{
                foreach (var film in Model.Films_Liste_VM)
                {
                    <tr>
                        <td>@film.Nom_Film</td>
                        <td>@film.Annee_Film</td>
                        <td>@Html.ActionLink($"Modifier le film:  {film.Nom_Film}", "Modifier_Film")</td>
                    </tr>
                }
            }
        </table>
        <br />
        <table>
            <tr>
                <th>Nom de la serie</th>
                <th>Annee de sortie de la serie</th>
                <th>Modifier la serie</th>
            </tr>

            @{
                foreach (var film in Model.Series_Liste_VM)
                {
                    <tr>
                        <td>@film.Nom_Serie</td>
                        <td>@film.Annee_Serie</td>
                        <td>@Html.ActionLink($"Modifier la serie:  {film.Nom_Serie}", "Modifier_serie")</td>
                    </tr>
                }
            }
        </table>
    </body>
    </html>
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    _____________________________________________________________________________________________________________________
    Views => Home => Modifier_Media.cshtml
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    @model Netflix_7.ViewModels.Cathalogue

    @{
        Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Modifier_Media</title>
    </head>
    <body>
        <div>
            @using (Html.BeginForm())
            {
                <fieldset>
                    <legend>Modifier le film</legend>
                    <div>
                        @Html.LabelFor(a => a.Film_VM.Nom_Film)
                        @Html.TextBoxFor(a => a.Film_VM.Nom_Film)

                        @Html.LabelFor(a => a.Film_VM.Annee_Film)
                        @Html.TextBoxFor(a => a.Film_VM.Annee_Film)

                        <input type="submit" value="Modifier" />
                    </div>

                </fieldset>
            }

        </div>
    </body>
    </html>
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ____________________________________________________________________________________
    View => Shared => Error ( et le code renvoie juste "ERROR") 
    et pour finir dans le global.asax il y a ce code:
    using Netflix_7.Models.BddContext_Entity;
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;

    namespace Netflix_7
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                RouteConfig.RegisterRoutes(RouteTable.Routes);

                IDatabaseInitializer<BddContext> init = new DropCreateDatabaseAlways<BddContext>();
                Database.SetInitializer(init);
                init.InitializeDatabase(new BddContext());
            }
        }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      5 octobre 2020 à 10:34:41

      Bonjour,

      Avant de t'aider, utiliser la balise code pour ton code, la c'est juste imbuvable a lire....

      • Partager sur Facebook
      • Partager sur Twitter
        5 octobre 2020 à 10:45:15

        Matioso a écrit:

        Bonjour,

        Avant de t'aider, utiliser la balise code pour ton code, la c'est juste imbuvable a lire....

        Bonjour, on fait ca comment stp 



        • Partager sur Facebook
        • Partager sur Twitter
          5 octobre 2020 à 10:59:07

          -
          Edité par Matioso 5 octobre 2020 à 11:00:00

          • Partager sur Facebook
          • Partager sur Twitter
            5 octobre 2020 à 11:11:33

            Bonjour, j'ai fait une petite application qui me retourne une liste de film et me permet de modifier, cette application est un dérivé du cour sur 

            "https://openclassrooms.com/fr/courses/1730206-apprenez-asp-net-mvc/1828251-utiliser-les-controleurs"

            Du coup je vous explique un peut ce que je voulais faire. 

            donc j'ai regroupé tous mes classes models, et mes classes listes models, dans un répertoire viewModel => dans la classe catalogue.

            L'idée était de pouvoir tous les appeler a partir d'une même vue. Ca marche comme je voulais pour la methode "Index de mon controller",

            mais pour la méthode "Modifier_Media de mon controller", lorsque je lance l'appli, je peux modifier le film, mais le film modifier ne s'affiche pas......, et je ne sais pas pourquoi, 

            Ps: je suis vraiment debutant en dev en gros j'ai probablement un niveau (4/1000) donc c'est sur que mon code doit etre bourré d'erreur, je ne demande pas une correction archi pro avec des syntaxes que je ne pourrais pas comprendren je vous demande juste svp de m'expliquer, avec les éléments présent dans mon code, et surtout de me dire si ce que j'ai en tete deja est possible. (Je vais vous mettre toute mon application répertoire par répertoire) 

            -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

            App_Data(Vide)

            _________________________________________________________________________________

            App_Start(RouteConfig)(non modfier)

            _________________________________________________________________________________

            Controllers => HomController.cs(le code suivant y est contenu)

            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

            using Netflix_7.Models;
            
            using Netflix_7.Models.BddContext_Entity;
            
            using Netflix_7.Models.DAL;
            
            using Netflix_7.ViewModels;
            
            using System.Collections.Generic;
            
            using System.Linq;
            
            using System.Web.Mvc;
            
            
            
            namespace Netflix_7.Controllers
            
            {
            
                public class HomeController : Controller
            
                {
            
                    BddContext bdd = new BddContext();
            
                    IDal dal = new Dal();
            
                    Cathalogue cathalogue = new Cathalogue();
            
            
            
                    // GET: Home
            
                    public ActionResult Index()
            
                    {
            
                        dal.Ajouter_Film("Avengers 1", "2012");
            
                        dal.Ajouter_Film("Avengers 2", "2015");
            
            
            
                        dal.Ajouter_Serie("Titan 1", "2018");
            
                        dal.Ajouter_Serie("Titan 2", "2020");
            
            
            
                        cathalogue.Films_Liste_VM = dal.Obtenir_tous_les_films();
            
                        cathalogue.Series_Liste_VM = dal.Obtenir_toutes_les_series();
            
            
            
            
            
                        return View(cathalogue);
            
                    }
            
            
            
                    public ActionResult Modifier_Media(int? id)
            
                    {
            
                        //if (id.HasValue)
            
                        //{
            
                        //    Film film = dal.Obtenir_tous_les_films().FirstOrDefault(a => a.ID == id.Value);
            
                        //    Serie serie = dal.Obtenir_toutes_les_series().FirstOrDefault(a => a.ID == id.Value);
            
            
            
                        //    if (film == null || serie == null)
            
                        //    {
            
                        //        return View("Error");
            
                        //    }
            
                        //    return View(film);
            
                        //}
            
                        //return View("Error");
            
            
            
                        if (id.HasValue)
            
                        {
            
                            cathalogue.Film_VM = dal.Obtenir_tous_les_films().FirstOrDefault(a => a.ID == id.Value);
            
            
            
                            Film film = new Film();
            
                            film = cathalogue.Film_VM;
            
            
            
                            if (film == null)
            
                            {
            
                                return View("Error");
            
                            }
            
                            return View(cathalogue);
            
                        }
            
                        return View("Error");
            
                    }
            
            
            
                    [HttpPost]
            
                    public ActionResult Modifier_Media(Cathalogue cathalogue)
            
                    {
            
            
            
                            dal.Modifier_Film(cathalogue.Film_VM.ID, cathalogue.Film_VM.Nom_Film, cathalogue.Film_VM.Annee_Film);
            
            
            
                            return RedirectToAction("Index");
            
            
            
                    }
            
                }
            
            }

            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

            ______________________________________________________________________________________________________________________

            Models =>BddContext_Entity => BddContext.cs (Code ci dessous)

            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

            using System;
            
            using System.Collections.Generic;
            
            using System.Linq;
            
            using System.Web;
            
            
            
            using System.Data.Entity;
            
            
            
            namespace Netflix_7.Models.BddContext_Entity
            
            {
            
                public class BddContext:DbContext
            
                {
            
                    public DbSet<Film> Film_Bdd { get; set; }
            
                    public DbSet<Serie> Serie_Bdd { get; set; }
            
                }
            
            }

            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

            ___________________________________________________________________________________________________________________

            Models => DAL => IDal (Code ci dessous) 

            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

            using System;
            
            using System.Collections.Generic;
            
            using System.Linq;
            
            using System.Text;
            
            using System.Threading.Tasks;
            
            
            
            using Netflix_7.Models;
            
            using Netflix_7.ViewModels;
            
            
            
            namespace Netflix_7.Models.DAL
            
            {
            
                public interface IDal:IDisposable
            
                {
            
                    void Ajouter_Film(string I_Nom_Film, string I_Annee_Film);
            
                    void Ajouter_Serie(string I_Nom_Serie, string I_Annee_Serie);
            
                    void Modifier_Film(int I_Id_Film, string I_Nom_Film, string I_Annee_Film);
            
                    void Modifier_Serie(int I_Id_Serie, string I_Nom_Serie, string I_Annee_Serie);
            
            
            
                    List<Film> Obtenir_tous_les_films();
            
                    List<Serie> Obtenir_toutes_les_series();
            
            
            
                }
            
            }
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            ______________________________________________________________________________________________________________
            Models => DAL => Dal.cs (Code ci dessous)
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Web;
            
            using System.Data.Entity;
            using Netflix_7.Models.BddContext_Entity;
            using Netflix_7.Models;
            using Netflix_7.ViewModels;
            
            namespace Netflix_7.Models.DAL
            {
                public class Dal : IDal
                {
                    BddContext bdd;
                    Cathalogue cathalogue;
                    public Dal()
                    {
                        bdd = new BddContext();
                        cathalogue = new Cathalogue();
                    }
            
                    public void Ajouter_Film(string I_Nom_Film, string I_Annee_Film)
                    {
                        bdd.Film_Bdd.Add(new Film { Nom_Film = I_Nom_Film, Annee_Film = I_Annee_Film });
                        bdd.SaveChanges();
                    }
            
                    public void Ajouter_Serie(string I_Nom_Serie, string I_Annee_Serie)
                    {
                        bdd.Serie_Bdd.Add(new Serie { Nom_Serie = I_Nom_Serie, Annee_Serie = I_Annee_Serie });
                        bdd.SaveChanges();
                    }
            
                    public void Dispose()
                    {
                        bdd.Dispose();
                    }
            
                    public void Modifier_Film(int I_Id_Film, string I_Nom_Film, string I_Annee_Film)
                    {
                        cathalogue.Film_VM = bdd.Film_Bdd.FirstOrDefault(Id => Id.ID == I_Id_Film);
            
                        if (cathalogue.Film_VM!= null)
                        {
                            cathalogue.Film_VM.Nom_Film = I_Nom_Film;
                            cathalogue.Film_VM.Annee_Film = I_Annee_Film;
            
                        }
                        bdd.SaveChanges();
                    }
            
                    public void Modifier_Serie(int I_Id_Serie, string I_Nom_Serie, string I_Annee_Serie)
                    {
                        Serie serie = bdd.Serie_Bdd.FirstOrDefault(Id => Id.ID == I_Id_Serie);
                        if(serie != null)
                        {
                            serie.Nom_Serie = I_Nom_Serie;
                            serie.Annee_Serie = I_Annee_Serie;
                        }
                        bdd.SaveChanges();
                    }
            
                    public List<Film> Obtenir_tous_les_films()
                    {
            
                        Cathalogue cathalogue = new Cathalogue();
                        cathalogue.Films_Liste_VM = bdd.Film_Bdd.ToList();
            
                        return cathalogue.Films_Liste_VM.ToList();
                    }
            
                    public List<Serie> Obtenir_toutes_les_series()
                    {
                        return bdd.Serie_Bdd.ToList();
                    }
                }
            }
            _____________________________________________________________________________________________________________

            Models => Film.cs (code ci dessous)
            """"""""""""""""""""""""""""""""""""""""""""""""""""

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Web;
            
            namespace Netflix_7.Models
            {
                public class Film
                {
                    public int ID { get; set; }
                    public string Nom_Film { get; set; }
                    public string Annee_Film { get; set; }
                }
            }
            """""""""""""""""""""""""""""""""""""""""""""""""""""""""
            ____________________________________________________________________________________________________________
            Models => Serie.cs
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Web;
            
            namespace Netflix_7.Models
            {
                public class Serie
                {
                    public int ID { get; set; }
                    public string Nom_Serie { get; set; }
                    public string Annee_Serie { get; set; }
                }
            }
            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            _________________________________________________________________________________________________________
            Model => Inittialisation.cs (Code ci dessous) 
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            using Netflix_7.Models.BddContext_Entity;
            using System;
            using System.Collections.Generic;
            using System.Data.Entity;
            using System.Linq;
            using System.Web;
            
            namespace Netflix_7.Models
            {
                public class Initialisation : DropCreateDatabaseAlways<BddContext>
                {
                    protected override void Seed(BddContext context)
                    {
                        base.Seed(context);
                    }
                }
            }
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            __________________________________________________________________________________________________
            ViewModels = > Cathalogue.cs (Code ci dessous) 
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Web;
            
            using System.Data.Entity;
            using Netflix_7.Models.BddContext_Entity;
            using Netflix_7.Models;
            using Netflix_7.Models.DAL;
            
            
            namespace Netflix_7.ViewModels
            {
                public class Cathalogue
                {
                    public Film Film_VM { get; set; }
                    public Serie Serie_VM { get; set; }
                    public List<Film> Films_Liste_VM { get; set; }
                    public List<Serie> Series_Liste_VM { get; set; }
                }
            }
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            ____________________________________________________________________________________________________________________
            Views => Home => Index.cshtml
            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            @model Netflix_7.ViewModels.Cathalogue
            
            @{
                Layout = null;
            }
            
            <!DOCTYPE html>
            
            <html>
            <head>
                <meta name="viewport" content="width=device-width" />
                <title>Index</title>
                <style type="text/css">
                    table{
                        border-collapse: collapse;
                    }
            
                    th, td {
                       border: 2px solid blue;
                    }
                </style>
            
            </head>
            <body>
                <div>
                    NETFLIX_ 7
                </div>
            
                <table>
                    <tr>
                        <th>Nom du film</th>
                        <th>Annee de sortie du film</th>
                        <th>Modifier le film</th>
                    </tr>
            
                    @{
                        foreach (var film in Model.Films_Liste_VM)
                        {
                            <tr>
                                <td>@film.Nom_Film</td>
                                <td>@film.Annee_Film</td>
                                <td>@Html.ActionLink($"Modifier le film:  {film.Nom_Film}", "Modifier_Film")</td>
                            </tr>
                        }
                    }
                </table>
                <br />
                <table>
                    <tr>
                        <th>Nom de la serie</th>
                        <th>Annee de sortie de la serie</th>
                        <th>Modifier la serie</th>
                    </tr>
            
                    @{
                        foreach (var film in Model.Series_Liste_VM)
                        {
                            <tr>
                                <td>@film.Nom_Serie</td>
                                <td>@film.Annee_Serie</td>
                                <td>@Html.ActionLink($"Modifier la serie:  {film.Nom_Serie}", "Modifier_serie")</td>
                            </tr>
                        }
                    }
                </table>
            </body>
            </html>
            """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            _____________________________________________________________________________________________________________________
            Views => Home => Modifier_Media.cshtml
            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            @model Netflix_7.ViewModels.Cathalogue
            
            @{
                Layout = null;
            }
            
            <!DOCTYPE html>
            
            <html>
            <head>
                <meta name="viewport" content="width=device-width" />
                <title>Modifier_Media</title>
            </head>
            <body>
                <div>
                    @using (Html.BeginForm())
                    {
                        <fieldset>
                            <legend>Modifier le film</legend>
                            <div>
                                @Html.LabelFor(a => a.Film_VM.Nom_Film)
                                @Html.TextBoxFor(a => a.Film_VM.Nom_Film)
            
                                @Html.LabelFor(a => a.Film_VM.Annee_Film)
                                @Html.TextBoxFor(a => a.Film_VM.Annee_Film)
            
                                <input type="submit" value="Modifier" />
                            </div>
            
                        </fieldset>
                    }
            
                </div>
            </body>
            </html>
            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            ____________________________________________________________________________________
            View => Shared => Error ( et le code renvoie juste "ERROR") 
            et pour finir dans le global.asax il y a ce code:
            using Netflix_7.Models.BddContext_Entity;
            using System;
            using System.Collections.Generic;
            using System.Data.Entity;
            using System.Linq;
            using System.Web;
            using System.Web.Mvc;
            using System.Web.Routing;
            
            namespace Netflix_7
            {
                public class MvcApplication : System.Web.HttpApplication
                {
                    protected void Application_Start()
                    {
                        AreaRegistration.RegisterAllAreas();
                        RouteConfig.RegisterRoutes(RouteTable.Routes);
            
                        IDatabaseInitializer<BddContext> init = new DropCreateDatabaseAlways<BddContext>();
                        Database.SetInitializer(init);
                        init.InitializeDatabase(new BddContext());
                    }
                }
            }
            



            • Partager sur Facebook
            • Partager sur Twitter
              5 octobre 2020 à 16:14:53

              a priori, tu modifies le film dans le cathalogue (sic!) et non pas la base de données (bdd) (si tu modifies une série, ça va marcher, compare le code entre les 2 fonctions Modifier)
              • Partager sur Facebook
              • Partager sur Twitter
                5 octobre 2020 à 16:45:35

                umfred a écrit:

                a priori, tu modifies le film dans le cathalogue (sic!) et non pas la base de données (bdd) (si tu modifies une série, ça va marcher, compare le code entre les 2 fonctions Modifier)


                Je fait toutes mes modifcation dans ma dal, pour juste faire des appelles a ma dal  dans mon controlleur, mais effectivement pour la série par exemple quand je retourne le models( serie) ca marche tres bien

                parcontre quand je retourne le models (cathalogue) 

                public ActionResult Modifier_Media(int? id)
                        {
                            if (id.HasValue)
                            {
                                cathalogue.Film_VM = dal.Obtenir_tous_les_films().FirstOrDefault(a => a.ID == id.Value);
                
                                Film film = new Film();
                                film = cathalogue.Film_VM;
                
                                if (film == null)
                                {
                                    return View("Error");
                                }
                                return View(cathalogue); //ICI: si je retourne le model"film" ca va marché, mais si je retourne le model"cathalogue" ca ne marche pas. un pote m'a dis que si je veux retourner par le model cathalogue, je doit placer un @Html.HiddenFor(dans ma vue Modifier_Media) 
                            }
                            return View("Error");
                        }
                • Partager sur Facebook
                • Partager sur Twitter
                  5 octobre 2020 à 17:20:06

                  Je parlais surtout du code dans DAL.cs

                          public void Modifier_Film(int I_Id_Film, string I_Nom_Film, string I_Annee_Film)
                          {
                              cathalogue.Film_VM = bdd.Film_Bdd.FirstOrDefault(Id => Id.ID == I_Id_Film);
                   
                              if (cathalogue.Film_VM!= null)
                              {
                                  cathalogue.Film_VM.Nom_Film = I_Nom_Film;
                                  cathalogue.Film_VM.Annee_Film = I_Annee_Film;
                   
                              }
                              bdd.SaveChanges();
                          }
                   
                          public void Modifier_Serie(int I_Id_Serie, string I_Nom_Serie, string I_Annee_Serie)
                          {
                              Serie serie = bdd.Serie_Bdd.FirstOrDefault(Id => Id.ID == I_Id_Serie);
                              if(serie != null)
                              {
                                  serie.Nom_Serie = I_Nom_Serie;
                                  serie.Annee_Serie = I_Annee_Serie;
                              }
                              bdd.SaveChanges();
                          }
                   
                          public List<Film> Obtenir_tous_les_films()
                          {
                   
                              Cathalogue cathalogue = new Cathalogue();
                              cathalogue.Films_Liste_VM = bdd.Film_Bdd.ToList();
                   
                              return cathalogue.Films_Liste_VM.ToList();
                          }
                   
                          public List<Serie> Obtenir_toutes_les_series()
                          {
                              return bdd.Serie_Bdd.ToList();
                          }
                      }

                  Il y a une certaine incohérence de traitement entre serie et film, ce qui explique les différences de fonctionnement ailleurs

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Utilisation des view models

                  × 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