Was ist „Präsentationslogik“ und wie viel ist in Ansichten akzeptabel?

13

In meiner Webanwendung muss ich ein Formular zum Erstellen und Bearbeiten bereitstellen. Die Formulare zum Erstellen und Bearbeiten weisen geringfügige Unterschiede auf, daher denke ich aus meiner Sicht an Folgendes:

<form>
// a lot of htnl goes here 
@if (editing)
{
  // some more fields shown in edit mode
}
@if(!editing)
{
 // some stuff shown in create mode
}

Ich habe immer versucht, keine ifAussagen in meine Ansichten aufzunehmen, aber dieses Mal sehe ich keine andere Möglichkeit, als einen großen Teil von HTML an zwei Stellen zu kopieren, was ich nicht tun möchte. Ist das die richtige „Präsentationslogik“ und gibt es noch andere Optionen?

Georgi Georgiev
quelle

Antworten:

17

Darstellungslogik umfasst die Logik und Berechnungen, die erforderlich sind, um die Geschäftsdaten für eine bestimmte Ansicht richtig darzustellen.
Bei komplexen grafischen Ansichten kann dies eine recht komplexe Berechnung sein (z. B. die Berechnung der Größe jedes Kreisschnitts und die Positionierung der Beschriftungen für ein Kreisdiagramm). Das Hauptmerkmal besteht jedoch darin, dass nur für den Strom relevante Informationen berechnet werden anzeigen und dass es die Geschäftsdaten in keiner Weise ändert.

Ob die Auswahl der Felder für den Bearbeitungs- / Erstellungsmodus eine ordnungsgemäße Verwendung der Präsentationslogik ist, ist umstritten. Zum Teil hängt es von Art und Umfang der Anpassung ab.
Wenn der Unterschied beispielsweise nur eine Titeländerung ist oder ein oder zwei Felder in einem der Modi als schreibgeschützt angezeigt werden, kann es die richtige Wahl sein, eine Ansicht zu haben und die Modi dynamisch auszuwählen.
Andererseits war meine erste Reaktion, dass es eigentlich zwei verschiedene Ansichten sein sollten, bei denen die gemeinsamen Teile aus einer dritten Datei importiert werden (ähnlich wie häufig die Kopf- und Fußzeile zu den Ansichten hinzugefügt wird).

Bart van Ingen Schenau
quelle
12

Es erscheint durchaus sinnvoll, in einer Razor-Ansicht ein oder zwei @if-Anweisungen zu verwenden.
Sie haben @if zu Razor hinzugefügt - es soll verwendet werden.

Ihr Code könnte auf ein @ verkürzt werden:

@if (editing)
{
  // some more fields shown in edit mode
}
else
{
 // some stuff shown in create mode
}

Eine Alternative besteht darin, drei Ansichten zu verwenden:

  • Teilansicht mit dem allgemeinen HTML
  • Ansicht erstellen (ruft die Teilansicht auf)
  • Ansicht bearbeiten (ruft auch die Teilansicht auf)

Sie können DisplayTemplates und EditorTemplates auschecken, um schreibgeschützte und bearbeitbare Ansichten aufzuteilen.

http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html


quelle