/ / Veröffentlichen Sie nicht bearbeitbare Werte - c #, asp.net-mvc, asp.net-mvc-3

Veröffentlichen Sie nicht editierbare Werte - c #, asp.net-mvc, asp.net-mvc-3

Ich habe eine Ansicht und ein Modell (sagen wir Auto). Ein Feld kann im Formular bearbeitet werden (die anderen Informationen werden nur angezeigt). Wenn das Ansichtsformular veröffentlicht wird, benötige ich alle Informationen, nicht nur die bearbeitbare Eigenschaft. Alle anderen Eigenschaften sind jedoch null.

Ich habe verborgene Felder erstellt, um die Daten zu veröffentlichen. Wenn Sie jedoch mehr ausgeblendete Felder als nicht ausgeblendete Felder haben, wird der Code wirklich schmutzig.

Gibt es eine Möglichkeit, alle Eigenschaften eines Modells zu veröffentlichen, ohne ausgeblendete Felder zu verwenden?

Antworten:

5 für die Antwort № 1

Sie sollten ein ViewModel nur mit den bearbeitbaren Feldern verwenden. Platzieren Sie in der Ansicht einfach die ID für das Modell in der Datenbank als verstecktes Feld.

Rufen Sie in Ihrem Controller das Modell aus der Datenbank ab. Prüfen Sie dann, ob Sie dieses Element tatsächlich ändern können (jemand könnte die ID in einem ausgeblendeten Feld ändern, z. B. mit Firebug).

Dann aktualisieren Sie einfach das Datenbankmodell mit den Feldern in ViewModel ... und speichern Sie das Modell erneut in der Datenbank.

Wenn Sie Ihr CAR-Modell in der Ansicht verwenden, dann jemandEs könnten mehr Felder geändert werden, als Sie erlaubt haben. Wenn Sie CarViewModel verwenden, ist dies nicht möglich, da der Modellbinder die Eigenschaften des Ansichtsmodells lediglich bindet.


2 für die Antwort № 2

Die Daten, die in einem HTML-Format gepostet werden, sind der Inhalt der Eingaben. Ich glaube nicht, dass es ein Problem mit ausgeblendeten Feldern gibt, wenn Sie diese Daten für den Beitrag benötigen. Dafür sind verborgene Felder gedacht.

Wenn Sie jedoch die Anzahl der versteckten Felder wirklich reduzieren möchten, können Sie alle diese Informationen in einem Feld "serialisieren" und anschließend im Post "deserialisieren". Oder in einer benutzerdefinierten Modellmappe.

Wenn Sie jedoch die Magie des ModelBinder in Asp.Net MVC verwenden möchten, müssen Sie Formularfelder verwenden.


-1 für die Antwort № 3

Wenn Sie die Informationen in verborgenen Feldern veröffentlichen möchten, können Sie sie auch in die Abfragestring einbeziehen.