2010-06-16 5 views
1

Je suis et programmeur MVC1, nouveau sur le MVC2.ASP.MVC 2 Modèle Données Persistance

Les données ne persisteront pas dans la base de données dans un scénario d'édition. Créer fonctionne bien.

Controller:

// 
    // POST: /Attendee/Edit/5 

    [Authorize(Roles = "Admin")] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(Attendee attendee) 
    { 

     if (ModelState.IsValid) 
     { 
      UpdateModel(attendee, "Attendee"); 
      repository.Save(); 

      return RedirectToAction("Details", attendee); 
     } 
     else 
     { 
      return View(attendee); 
     } 
    } 

Modèle:

[MetadataType(typeof(Attendee_Validation))] 
public partial class Attendee 
{ 
} 

public class Attendee_Validation 
{ 

    [HiddenInput(DisplayValue = false)] 
    public int attendee_id { get; set; } 

    [HiddenInput(DisplayValue = false)] 
    public int attendee_pin { get; set; } 

    [Required(ErrorMessage = "* required")] 
    [StringLength(50, ErrorMessage = "* Must be under 50 characters")] 
    public string attendee_fname { get; set; } 

    [StringLength(50, ErrorMessage = "* Must be under 50 characters")] 
    public string attendee_mname { get; set; } 
} 

J'ai essayé d'ajouter [Bind (Exclure = "attendee_id")] au-dessus de la déclaration de classe, mais la valeur de l'attribut attendee_id est mis à '0'.

Voir (fortement typées):

<% using (Html.BeginForm()) {%> 
    ... 
    <%=Html.Hidden("attendee_id", Model.attendee_id) %> 
    ... 
    <%=Html.SubmitButton("btnSubmit", "Save") %> 
<% } %> 

Fondamentalement, la repository.Save(); la fonction semble ne rien faire. J'imagine que cela a quelque chose à voir avec une violation de contrainte de clé primaire. Mais je ne reçois aucune erreur de SQL Server. L'application semble fonctionner correctement, mais les données ne sont jamais conservées dans la base de données.

+0

Nous avons besoin de plus d'informations pour vous aider. Quel genre de débogage avez-vous essayé et pouvez-vous décrire mieux ce qui se passe lorsque vous déboguez? Allez-vous même à l'appel Enregistrer? Quelque chose se passe-t-il dans votre dépôt Enregistrer la méthode? – klabranche

Répondre

0

Got It! Voici la solution:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id, FormCollection form) 
{ 
    Attendee attendee = repository.GetAttendee(id); 

    try 
    { 
     UpdateModel(attendee, form); 
     repository.Save(); 

     return RedirectToAction("Details", attendee); 
    } 
    catch 
    { 
     return View(attendee); 
    } 
} 

Le ValueProvider UpdateModel() était le problème.