La Liaison de modèle à une Liste MVC 4
Est-il un motif de liaison d'une IList des éléments de la vue. Il me semble avoir des problèmes avec la HttpPost. Je sais que Phil Haack a écrit un joli article, mais il est daté et il a dit qu'ils pourraient avoir un correctif avec MVC 4.
- Veuillez envisager d'ajouter plus de détails, y compris du code et des liens à votre question pour la rendre plus claire. Voici une liste de vérification pour vous aider à démarrer: tinyurl.com/so-list
- La liaison d'une liste à une vue. Ce n'est pas clair à ce sujet?
- Il y a des variations en fonction de ce que votre forme ressemble. Certaines Afficher le code pourrait l'aider.
- Les Collections ne sont pas conservées sur la publication.
- Sélection d'une liste d'éléments, ou d'un formulaire avec une zone de texte pour chaque élément, ou d'un formulaire avec une zone de texte pour chaque propriété de chaque élément, toutes les variations possibles sur "la liaison d'une liste à une vue" et exigent des techniques différentes.
- Vous avez dit que vous avez des problèmes avec le
HttpPost
. Apparemment, cela signifie que vous avez un peu de code avec un problème spécifique, soins pour le montrer? Vous avez fait référence à un article de Phil Haack, mais pas de lien. Il n'y a pas qu'une façon de "se lier à une liste d'éléments à vue". Ne pas présumer à la générosité de la communauté qui est de répondre à votre question. - Voici l'url avec Phil de l'article. haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
- Je suis en train de le garder aussi simple que possible. Il n'y a rien de mal avec mon code, c'est plus d'un MVC question. Le problème est le Modèle de la Liaison d'une Liste. Il existe d'innombrables permutations, dire que c'est une simple Liste de Voitures.
- reportez-vous à la réponse ici: stackoverflow.com/questions/7008714/...
- Nous n'avons pas dire quelque chose de mal avec votre code. Nous avons besoin de voir votre viewmodel+vue de tenter de savoir de quelle liste de liaison technique fonctionne pour votre scénario.
Vous devez vous connecter pour publier un commentaire.
C'est comment je fais si j'ai besoin d'un formulaire affiché pour chaque élément, et les entrées pour les différentes propriétés. Dépend vraiment de ce que je suis en train de faire.
ViewModel ressemble à ceci:
Vue(avec BeginForm bien sûr):
Action:
Noter que sur le post de retour uniquement les propriétés qui avait des intrants auront des valeurs. I. e., si la Personne avait un .Le SSN propriété, il ne serait pas disponible dans l'action parce qu'il n'était pas un champ dans le formulaire.
Notez que la façon dont MVC le modèle de liaison fonctionne, il ne regarde consécutives ID. Ce faisant, quelque chose comme ça où vous conditionnellement masquer un élément va l'amener à ne pas lier les données après le 5ème élément, car une fois qu'il rencontre un écart dans les Id, il s'arrête de liaison. Même si il y avait 10 personnes, vous obtenez seulement les 4 premiers sur la publication:
++1
je devais le faire comme ceci:@{ ++i; }
, à l'intérieur d'un@foreach()
bloc.@{ }
pour passer ce contexte de retour de code C#. Mais bon bout de toute façon.<input>
et, comme la facilité d'avoir la variable d'itérateur encore qu'il se sent très non-SÉCHER à répéter l'indice d'accès de tous sur la place. Dans cet exemple il n'y a pas l'usage de laperson
variable donc je l'ai changé à partir d'une boucle foreach pour pour.Propre solution pourrait être de créer une classe générique pour gérer la liste, de sorte que vous n'avez pas besoin de créer une classe différente à chaque fois que vous en avez besoin.
et lorsque vous revenez à la Vue, il vous suffit simplement de faire:
puis définir la liste dans le modèle:
et prêt à aller:
~Contrôleur
~ Fortement Typé Vue Index
~ Fortement Typé Envoi
C'est tout ce que vous avez eu à faire l'homme, changer sa MyViewModel modèle de IList.