Paramètre d'initialisation d'une méthode, Modification d'un champ d'une table [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
27 juillet 2012
-
Messages postés
10
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
27 juillet 2012
-
Bonjour à vous,

Je débute en asp et j'ai un problème que je n'arrive pas à résoudre, je compte sur votre aide ! :)

Voici mes deux méthodes pour editer des champs dans une table. J'ai initialiser mon paramètre id dans la méthode GET afin de ne pas avoir l'erreur suivante


Le dictionnaire de paramètres contient une entrée Null pour le paramètre 'id' de type non Nullable 'System.Int32' pour la méthode 'System.Web.Mvc.ActionResult Edit(Int32)' dans [...]



Mon problème est le suivant, en initialisant ce paramètre, rien ne ce passe lorsque j'essais d'éditer une entrée. Si par exemple je remplace id=0 par id=5, lorsque j'édite l'entrée dont l'id est égal à 5, mon champ est modifié. Lorsque j'édite une autre entrée, dans ma vue j'ai les info du champs d'id = 5 qui s'affiche et je ne peux rien modifier.

Merci pour votre aide, j'espère avoir été assez clair




       public ActionResult Edit(int id = 0)
        {            
                var productToEdit (from p in _db.aspnet_Products where      p.ProductId id select p).FirstOrDefault();
                return View(productToEdit);
        }

        //
        // POST: /Administration/Edit/5

        [HttpPost]
        public ActionResult Edit(aspnet_Products productToEdit)
        {
            if (!ModelState.IsValid)
                return View();

            try
            {
                var firstProduct (from p in _db.aspnet_Products where p.ProductId productToEdit.ProductId select p).FirstOrDefault();
                _db.ApplyCurrentValues(firstProduct.EntityKey.EntitySetName, productToEdit);
                _db.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

1 réponse

Messages postés
10
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
27 juillet 2012

J'ai trouvé, l'erreur est simple et bête et ne vient que de moi.
J'avais simplement oublié de décommenter
id=item.PrimaryKey

dans ma vue Index.aspx et de lui renseinger l'id de mon objet.

<%: Html.ActionLink("Edit", "Edit", new { id=item.ProductId }) %>