2010-10-11 11 views
2

Conclusion en images, se trouvent dans le fondForms Comprendre dans MVC: Comment puis-je alimenter le modèle à partir d'une liste <>


Je vais avoir quelques problèmes pour obtenir le fonctionnement des formulaires dans MVC (comme je suis un développeur et WebForms veux vraiment commencer à utiliser MVC dans un grand projet)

Je pris le projet Web MVC2 et ajoutez simple ViewModel à elle

namespace TestForms.Models 
{ 
    public class myFormViewModel 
    { 
     public myFormViewModel() { this.Options = new List<myList>(); } 

     public string Name { get; set; } 
     public string Email { get; set; } 

     public List<myList> Options { get; set; } 
    } 

    public class myList 
    { 
     public myList() { this.Value = this.Name = ""; this.Required = false; } 

     public string Name { get; set; }   
     public string Value { get; set; }  
     public string Type { get; set; } 
     public bool Required { get; set; } 
    } 
} 

Créé un Strongly Typed View, passé un nouvel objet à la vue et exécutez-le.

Lorsque j'appuie sur submit, il ne retourne pas ce qui est dans la partie Options ... comment puis-je lier cela aussi?

mon avis

alt text http://www.balexandre.com/temp/2010-10-11_1357.png

remplissant le formulaire généré

alt text http://www.balexandre.com/temp/2010-10-11_1353.png

quand je presse la partie Soumettre Options ne sont pas transmises au modèle! Qu'est-ce que j'oublie?

alt text http://www.balexandre.com/temp/2010-10-11_1352.png



Conclusion

Modification de la boucle en vue d'affecter le numéro séquentiel, nous avons maintenant

<%= Html.TextBox("model.Options[" + i + "].Value", option.Value)%> 

model est le nom de notre variable modèle que nous passons à la vue Options est le nom de la propriété qui est de type List et nous utilisons le nom de la propriété

alt text

alt text

Répondre

2

En regardant votre interface, il semble que vous n'avez pas mis les données du membre Options dessus.

<% foreach (myList obj in Model.Options) { %> 
    // Add the object to your UI. they will be serialized when the form is submitted 
<% } %> 

Vérifiez également que vous placiez les données dans un élément de forme

EDIT:

Désolé! Je n'ai pas réalisé que vous remplissiez l'objet à l'intérieur du contrôleur. Pouvez-vous s'il vous plaît montrer le code que vous avez dans la vue?

+0

Je l'ai fait, je l'ai fait, ou il ne montrera jamais 'Age' et' ZipCode' car il appartient à l'objet qui est passé à l'index 'View' ... ajouté l'image de celui-ci – balexandre

+0

Ok! Jetez un oeil à cette question que j'ai faite ici sur SO il y a quelque temps. Il vous donnera toutes les étapes à suivre pour que le classeur modèle par défaut sérialise l'objet complexe. 'http: // stackoverflow.com/questions/3800305/construction-un-complexe-objet-étape-par-étape-où-pour-sauver-it' – Lorenzo

+0

J'essaie mais je ne comprends pas, dans votre exemple, vous n'utilisez pas les vues fortement typées, vous utilisez ViewData/Session pour garder une trace des valeurs. ** J'ai essayé ** d'avoir '<% = Html.TextBox (" Name ", option.Name)%>' mais je reçois la même chose, mes 'Options' ne sont pas peuplées en aucune façon :( – balexandre