Ich habe eine Liste in meinem ViewModel Ich analysiere die View
%Vor%BoolSetting:
%Vor%Ich möchte dann ein Kontrollkästchen für alle Elemente in meiner Liste drucken, also befindet sich die Liste im ViewModel, das die Ansicht verwendet
%Vor%Das Problem ist, wenn ich dies poste, dann habe mein Modell die aktualisierten Einstellungen (die Bool-Werte) nicht in der Liste in meinem ViewModel gespeichert und daher ist das Objekt leer.
Ich könnte
machen %Vor%Aber dieses Viewmodel wird viele Listen haben und einige von ihnen werden die gleichen Namen haben! Das verursacht Konflikte
Gibt es also eine Möglichkeit, alle meine Boole zu drucken und MVC dann dazu zu bringen, die Daten wieder in das List-Objekt zu schreiben? Ich kann CheckBoxFor nicht benutzen, um zu arbeiten, weil es einen Ausdruck will, und ich kann einen Weg nicht finden, durch meine Liste auf diese Weise zu iterieren
Kann ich es vielleicht mit Templates beheben, indem ich eine Vorlage für BoolSetting mache und vielleicht List?
Beginnen Sie mit der Korrektur Ihres Ansichtsmodells und dem Entfernen des benutzerdefinierten Konstruktors oder des Standardmodellbinders können Sie ihn nicht instanziieren, und Sie müssen benutzerdefinierte Modellbinder und andere Dinge schreiben:
%Vor%Schreiben Sie anschließend eine Controller-Aktion, die Ihr Ansichtsmodell auffüllt:
%Vor% dann eine Ansicht ( ~/Views/Home/Index.cshtml
), in der Sie einfach Editor-Vorlagen verwenden und keine foreach
-Schleifen oder schwach typisierte HTML-Helfer wie Html.CheckBox
schreiben. Durch die Verwendung von Editor-Templates stellen Sie sicher, dass alle Eingabefelder korrekte Namen haben, damit der Standard-Modellbinder seine Werte während des Postbacks in das View-Modell holen kann:
und schließlich die entsprechende Editor-Vorlage für das View-Modell, die für jedes Element der Collection gerendert wird ( ~/Views/Home/EditorTemplates/BoolSetting.cshtml
):
Tags und Links asp.net-mvc-3 .net c#