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:
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
Citation:
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:
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