Anzeige von Daten in Views
Durch den @-Syntax kann innerhalb der .cshtml Dateien mit C# Code gearbeitet werden, um Eigenschaften von Objekte wie Produkt, Kunde, etc. in die HTML Seiten zu setzen.
Im einfachsten Fall steht dann im Code der .cshtml Datei nur der Syntax
@Objekt.Eigenschaft
an der Stelle, an der die Information in den HTML Code eingefügt werden soll.
Daten aus dem Model
Besonders einfach nutzbar ist das Model Objekt, das in jede View übergeben bekommt. Dazu ist in den Views am Anfang der Seite eine Direktive @model Models.StateModel angefügt. Dies definiert, dass in die Seite ein Objekt vom Typ CentauriBaseShop.Models.StateModel übergeben wird, dessen Eigenschaften in der .cshtml einfach in den HTML Code eingefügt werden kann.
Eine wichtige Eigenschaft dieses Models ist .state, was auf die aktuelle Instanz von Centauri.Shop.State verweist, in der der Kunde angemeldet, seinen Warenkorb hat, etc.
Alternativ kann auf den State auch über die Funktion Centauri.Shop.State.Current() zugegriffen werden.
Über die Eigeschaft Customer in Centauri.Shop.State kann auf den Kunden und alle seine Eigenschaften zugeriffen werden. Um den Namen des Kunden an einer Stelle des HTML Codes einzusetzen fügt man
@Model.state.Customer.Lastname
in den .cshtml Code ein.
Über die Eigenschaft Cart in Centauri.Shop.State kann auf den aktuellen Warenkorb zugriffen werden. Um den Gesamtwert des aktuellen Warenkorbes in den HTML Code einzusetzen, fügt man
@Model.state.Cart.BasketValue
in den .cshtml Code ein.
Der Centauri.Shop.State verfügt über zahlreiche .Hidexxxxx Eigenschaften, mit dem der Shop die Sichtbarkeit von Elementen steuert. Dies ist nicht nur bei der Referenz-Implementierung des CentauriBaseShops natürlich zum Ein- und Ausblenden von Bereichen wichtig, die in konkreten Kundenprojekten genutzt oder nicht genutzt werden. Auch in einer kundenspezifischen Implementierung sollte mit den .Hidexxxxx Eigenschaften gearbeitet werden, damit in einer Multishop Konfiguration z.B. der Registrieren Button für eine bestimmte Kundengruppe ausgeblendet werden kann.
Für die eine komplette Darstellung der Möglichkeiten bitte die Referenz des Centauri.Shop.State verwenden.
Während ein Großteil der Seiten mit Models.StateModel auskommt, übergibt der Shop an Spezialseiten eine von Models.StateModel abgeleitete Klasse, die über zusätzliche Eigenschaften für diese Seite verfügt. Beispielsweise wird an die Produkt-Detailseite ein Models.ProduktStateModel übergeben, das als zusätzliche Eigenschaft produkt hat, in dem das Produkt und seine Eigenschaften referenziert wird, das in der Seite dargestellt werden soll.
Das gilt ebenso für die Such und Kategorieseiten, in denen in abgeleiteten Models neben den Produkten und Breadcrumbs, eine Liste von Kategorien und eine Liste von Filtermöglichkeiten übergeben wird, die im .cshtml dargestellt werden sollten. Die Referenzimplementierungen des BaseShop sind ein guter Anhaltspunkt, welche zusätzlichen Eigenschaften angeboten werden.