2010-11-08 9 views
3

J'ai vu cette question posté quelques autres fois sur SO, mais pas dans le même contexte que le mien. Donc je m'excuse si c'est un re-post.ASP.NET MVC: Comment envoyer un objet complexe avec des listes au serveur pour la mise à jour (avec/sans FormCollection)

Je l'objet complexe suivant:

public class UserProfile 
{ 
    public Education education { get; set; } 
    // 3 other properties irrelevant to question b/c not able to be updated 
} 

La classe Education ressemble à ceci:

public class Education 
{ 
    public List<Certification> certifications { get; set; } 
    public List<Degree> degrees { get; set; } 
} 

Et la classe de certification ressemble à ceci:

public class Certification 
{ 
    public int yearCertified { get; set; } 
    public DateTime expirationDate { get; set; } 
} 

La classe Degree ressemble à la classe de certification. Sur ma page d'affichage Modifier (mise à jour) pour leur profil utilisateur, je permets à l'utilisateur d'ajouter dynamiquement autant de diplômes et de certifications qu'il le souhaite. Cela signifie que je voudrais POSTER une liste d'objets de certification et de degré à la méthode de mise à jour dans mon contrôleur. Je sais que l'affichage d'objets simples est facile avec MVC, mais essayer de publier un objet complexe pour une mise à jour, en particulier avec une liste d'autres objets, est un peu plus compliqué.

Quelqu'un peut-il m'aider avec ce à quoi devrait ressembler mon View et Controller? J'utilise MVC 1.0.

Merci.

+1

double possible de [modèle complexe de liaison à une liste] (http://stackoverflow.com/questions/231878/complex-model-binding-to-a-list) - Charges d'exemples: http://stackoverflow.com/search?q=model+binding+to+a+list – jfar

Répondre

-1

Je travaille avec quelque chose de similaire et j'ai résolu en utilisant une combinaison du modèle et FormCollection.

En supposant que votre signature d'action est:

[AcceptVerbs("Post")] 
public ActionResult Edit(Education edu, FormCollection formColl) 
{ 
    var tmp = formColl; 
    return view... 
} 

Je mis un point de rupture sur var tmp, vérifiez les propriétés ont été peuplées par le cadre, puis utilisez les variables affichées dans FormCollection pour régler le reste.

Il existe de meilleurs moyens de résoudre ce problème, mais c'est quelque chose qui a servi et pourrait vous aider.

Cordialement

Thabet