Paramètre d'initialisation d'une méthode, Modification d'un champ d'une table

Résolu
MauxDangereux Messages postés 10 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 27 juillet 2012 - 12 juil. 2012 à 11:37
MauxDangereux Messages postés 10 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 27 juillet 2012 - 12 juil. 2012 à 12:09
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();
            }
        }
A voir également:

1 réponse

MauxDangereux Messages postés 10 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 27 juillet 2012
12 juil. 2012 à 12:09
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 }) %>
3
Rejoignez-nous