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

Problème avec mise à jour dans la base de données


Sujet :

ASP.NET MVC

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème avec mise à jour dans la base de données
    Slt à tous!
    Je suis un débutant en MVC et
    J'ai un problème avec ma méthode contenue dans mon contrôleur qui permet de faire la mise à jour de 4 champs dont idauto,firstname,lastname,age.

    Voici mon contrôleur:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public ActionResult Edit(int id)
            {
                var verifenreg = (from c in entities.customerSet
                                  where c.idauto == id
                                  select c).FirstOrDefault();
                return View(verifenreg);
     
            }
            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Edit(customer verifenreg)
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        var enreg_edit = (from d in entities.customerSet
                                          where d.idauto == verifenreg.idauto
                                          select d).FirstOrDefault();
                        entities.ApplyPropertyChanges(enreg_edit.EntityKey.EntitySetName,verifenreg);
                        entities.SaveChanges();
                        return RedirectToAction("liste_customers");
                    }
                    catch (Exception m)
                    {
                        return Redirect("subscription_success");
                    }
                }
                else
                {
                    return View("subscription_success");
                }
     
            }
    Ma première méthode "edit" se charge de la requête exécutée via un get c'est à dire lors de l'affichage du formulaire avec les infos correspondantes au numéro passé en paramètre à" edit". Jusqu'à là pas de problème ça affiche correctement les infos dans les champs de la page Edit qui comporte un bouton valider que l'utilisateur se charge d'appuyer après modification des champs. Ma deuxième méthode est exécutée lorsque la page edit est postée. A ce niveau j'ai une erreur qui s'affiche

    The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32)' in 'management.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nom du paramètre : parameters
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.ArgumentException: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32)' in 'management.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nom du paramètre : parameters

    Erreur source:

    Une exception non gérée s'est produite lors de l'exécution de la demande Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

    Trace de la pile:

    [ArgumentException: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32)' in 'management.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nom du paramètre : parameters]
    System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary`2 parameters, MethodInfo methodInfo) +425067
    System.Web.Mvc.<>c__DisplayClass1.<Execute>b__0(ParameterInfo parameterInfo) +18
    System.Linq.WhereSelectArrayIterator`2.MoveNext() +78
    System.Linq.Buffer`1..ctor(IEnumerable`1 source) +259
    System.Linq.Enumerable.ToArray(IEnumerable`1 source) +81
    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +135
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24
    System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +52
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +254
    System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +19
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +192
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +314
    System.Web.Mvc.Controller.ExecuteCore() +105
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +39
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
    System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +34
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +59
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +44
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +7
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8682542
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
    Voici ma vue Edit:
    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
    23
    24
    25
    26
    27
    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<management.Models.customer>" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    	Edit
    </asp:Content>
     
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
     
        <h2>Edit</h2>
       <%using (Html.BeginForm()) { %>     
       <fieldset>
        <legend>Inserting of Customers</legend>
        <table>
     
        <tr><td><%=Html.LabelFor(model=>model.firstname)%></td>
        <td><%=Html.TextBoxFor(model =>Model.firstname)%><%=Html.ValidationMessageFor(model => model.firstname)%></td></tr>
     
        <tr><td><%=Html.LabelFor(model => Model.lastname)%>:</td>
        <td><%=Html.TextBoxFor(model =>Model.lastname)%><%=Html.ValidationMessageFor(model =>model.lastname)%></td></tr>
        <tr><td><%=Html.LabelFor(model=>model.age)%>:</td>
        <td><%=Html.TextBoxFor(Model=>Model.age)%><%=Html.ValidationMessageFor(model=>model.age)%></td></tr>
        <tr><td><input type="submit"  value="envoyer"/></td></tr></table>
     
        </fieldset>
     
       <%} %>
      </asp:Content>
    Merci d'avance pour votre aide car j'en ai vraiment besoin au plus vite pour finir un projet

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Salut,

    en fait, c'est une erreur super classique :
    The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32)' in
    Elle est provoquée par une tentative de binding de Id

    Essaye de changer ton code comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit([Bind(Exclude = "Id")]customer verifenreg)
    {

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. [ZF 1.11] Zend_form checkbox problème de mise à jour dans la base de donnée
    Par Invité dans le forum Zend_Form
    Réponses: 0
    Dernier message: 02/05/2015, 11h22
  2. [MySQL] Problème de mise à jour d'une base de données avec php
    Par cykablue dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/02/2011, 16h46
  3. Réponses: 5
    Dernier message: 07/12/2010, 10h38
  4. Mise à jour dans la base de données
    Par thechef dans le forum Langage
    Réponses: 3
    Dernier message: 12/08/2009, 09h48
  5. [MySQL] Problème de mise à jour de la base de données
    Par Osiris22 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/01/2006, 16h08

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