J'ai un viewmodel et il a une classe imbriquée ce qui n'est pas en relation avec d'autres classes de modèles. Je peux remplir les données nécessaires dans cette classe imbriquée (ClassX) pour montrer ceux dans la vue mais je ne peux pas extraire des données de la classe imbriquée (via MyViewModel) dans l'action de publication juste quand je la donne en action post comme autre paramètre . Il apparaît dans le viewmodel original (MyViewModel) mais ses attributs sont null/0. Ma question: Puis-je lire les données de la classe imbriquée via la classe viewmodel?ASP.NET MVC 3 classes modèle et viewmodel
Répondre
http://goneale.com/2009/07/27/updating-multiple-child-objects-and-or-collections-in-asp-net-mvc-views/ c'est un bon article pour vous
MyViewModel myViewModel= new MyViewModel();
UpdateModel(myViewModel, "MyViewModel");
myViewModel.myViewModel= new myViewModel();
UpdateModel(myViewModel.classX, "User.classX");
Merci. Je vais lire cet article. – sada
Si je comprends bien votre question, vous avez besoin BindAttribute.Prefix sur votre paramètre ClassX cx
de la méthode d'action. De cette façon, le classeur de modèle liera correctement les valeurs pour cela. La valeur de Bind.Prefix
doit être le nom de la propriété ClassX dans MyViewModel
, dans votre exemple, la chaîne - "classX"
//
// POST: /MyModel/Create
public ActionResult Create(MyViewModel myvm, [Bind(Prefix = "classX")]ClassX cx, FormCollection collection)
{}
Idée est dans ce qui suit - côté client, lorsque vous soumettez le formulaire, ses valeurs sont envoyées au serveur Comme ceci
attrA=someValue
classX.SomeProperty=someValue
classX.SomeOtherProperty=someOtherValue
Lorsqu'ils sont passés aux paramètres d'action, ces paires de chaînes name = value sont traduites en objets. Les noms du côté gauche de l'égalité correspondent aux noms de propriété MyViewModel
et le paramètre ClassX reste vide. Mais alors vous spécifiez Prefix = "classX"
, liant modèle correspond à des chaînes après point dans le côté gauche de l'égalité aux noms de propriété ClassX, de sorte que cela devrait remplir les valeurs de ClassX aussi.
Merci pour votre réponse. – sada
- 1. ASP.NET MVC 3 POST ModelState et ViewModel
- 2. ASP.NET MVC 3: ViewModel pour le modèle principal?
- 3. Génération Dynamic ViewModel dans asp.net mvc 3
- 4. ASP.Net MVC 3 ViewModel avec listes déroulantes
- 5. ASP.NET MVC 3 - ViewModel & Refresh - Problèmes
- 6. ASP.Net MVC 3 ViewModel, JavaScript discret et validation personnalisée
- 7. Chemin ASP.NET MVC ViewModel
- 8. ASP.NET MVC 3 Vues et modèle
- 9. ASP.NET MVC ViewModel bonnes pratiques
- 10. ASP.NET MVC ViewModel et DropDownList
- 11. ViewModel MVC 3
- 12. Dropdownlist sur Asp.net MVC 3 à partir de viewModel
- 13. asp.net mvc 3 modèle liaison dropdown
- 14. ViewModel et modèle dans ASP.NET MVC 3 en ce qui concerne DDD - Conseils
- 15. Bind <select> à viewmodel dans ASP.NET MVC 3
- 16. ASP.NET MVC ViewModel Concern
- 17. ASP.NET MVC 3 - Validation du modèle
- 18. ASP.NET MVC ViewModel génération automatique
- 19. plat vs Nested ViewModel classes dans ASP.NET MVC
- 20. Extension Knockout.js ViewModel dans l'application asp.net mvc
- 21. ASP.NET MVC passe ViewModel à différents ViewModel
- 22. validation ASP.NET MVC enfant ViewModel
- 23. ASP.NET MVC 3: ViewModel qui gère une liste de listes
- 24. ASP.NET MVC ViewModel et variables de demande
- 25. ASP.Net MVC et jQuery DatePicker ViewModel
- 26. ViewData et ViewModel dans MVC ASP.NET
- 27. ASP.NET MVC 3 get HTML à partir viewmodel
- 28. ASP.NET MVC 3 Validation du modèle
- 29. Asp.net 3 mvc - modèle personnalisé liant
- 30. asp.net mvc 3 modèle dans la vue
Juste une supposition - Je pense que le processus de conversion ne fera que ramener les propriétés. Je pense que vous devez changer "ClassX classX public"; à "public ClassX classX {get; set;}" –
Merci. J'ai essayé votre suggestion et cela a fonctionné. – sada