2010-06-28 2 views
4

J'ai cherché une bonne solution de travail pour gérer correctement la liaison de modèles avec des attributs imbriqués. J'ai un modèle qui a une liste d'autres modèles enfants comme ci-dessous:Comment gérer les modèles imbriqués dans ASP.NET MVC

public class Organization : IEntity 
{ 
    [ScaffoldColumn(false)] 
    public int ID 
    { 
     get; 
     set; 
    } 

    [LocalizedDisplayName("Goals")] 
    public virtual ICollection<OrganizationGoal> Goals 
    { 
     get; 
     set; 
    } 
} 

Dans le contrôleur je tente de mettre à jour les données comme ceci:

[HttpPost] 
public ActionResult Edit(string organizationIdentifier, FormCollection values) 
{ 
    var organization = organizationService.GetByIdentifier(organizationIdentifier); 

    if (TryUpdateModel(organization)) 
    { 
     organizationService.Save(organization); 
     return RedirectToAction("Edit"); 
    } 

    return View("Edit"); 
} 

Mais le TryUpdateModel retourne toujours faux et aucune validation les messages sont affichés dans l'interface utilisateur. L'interface utilisateur est construite en utilisant l'assistant MVC standard EditorFor.

Quelle est la meilleure pratique pour ce faire? Pour un scénario assez normal, il n'est pas facile de trouver de l'information.

Merci!

+0

Kristoffer, pouvez-vous inclure des détails sur les paires de valeurs clés sont transmis via le FormCollection? –

Répondre

0

Maintenant, est-ce que la colonne ID correspond à ce que vous recherchez avec GetByIdentifier? Si oui, pourquoi passez-vous une chaîne, mais l'avez-vous comme un int dans la définition? En outre, en lisant à propos de TryUpdateModel, il semblerait que vous préfériez utiliser UpdateModel à la place.

http://msdn.microsoft.com/en-us/library/dd460189.aspx

Questions connexes