Ich habe eine Teilansicht, die eine Liste von Objekten in ein Tabellenformat rendert und die Bearbeitung der Werte erlaubt ...
%Vor%Ich möchte dies umgestalten, um die stark typisierten HTML-Helfer in mvc2 zu nutzen. Mir fällt es schwer zu verstehen, wie man die Lambda-Ausdrücke erzeugt, und ich hoffe auf etwas Hilfe. das folgende scheint mir nicht ganz richtig zu sein.
%Vor%Zunächst sollten Sie nicht in einer Ansicht iterieren. Iterieren bedeutet Schleifen, Schleifen bedeuten C # / VB.NET, C # / VB.NET in einer Ansicht führt zu Spaghettikode.
Ich würde Ihnen empfehlen, Editor-Vorlagen . Auf diese Weise müssen Sie keine Schleifen in Ihren Ansichten schreiben. Fügen Sie die folgende Datei in ~/Views/Home/EditorTemplates/PictureModel.ascx
hinzu:
Beachten Sie, dass das Partial jetzt stark in whoozit.Models.PictureModel
statt in IList<whoozit.Models.PictureModel>
eingetippt ist. Jetzt müssen Sie nur noch dieses Teil aus der Hauptansicht einschließen:
Dabei ist Pictures
eine Eigenschaft des Typs IList<whoozit.Models.PictureModel>
in Ihrem Hauptansichtsmodell. Dadurch wird für jedes Element der Sammlung automatisch die partielle aufgerufen, so dass Sie keine hässlichen Schleifen in Ihren Ansichten schreiben müssen.
Es funktioniert nur per Konvention: das Teil muss PictureModel.ascx
als Typname der Listenelemente heißen und sich im Ordner ~/Views/Home/EditorTemplates
oder ~/Views/Shared/EditorTemplates
befinden.
Editor / Display-Vorlagen werden Ihre Ansichten viel eleganter machen.
Anmerkung: In .NET sind die Property-Namen mit Großbuchstaben zu beginnen, daher würde ich Ihnen empfehlen, die Eigenschaft name
in Name
umzubenennen. Es ist einfach natürlicher, zu schreiben und zu lesen:
Sie können stark typisierte Hilfsmethoden verwenden, indem Sie das Modell mit einer for-Schleife durchlaufen. Dadurch wird auch das html-Attribut "name" eindeutig, sodass das Modellbinderelement Ihnen helfen kann, die Werte in einer sicheren Situation an Ihr Modell zuzuordnen.
%Vor%Lesen Sie hier mehr .. Ссылка
Sie sagen Ihrer teilweisen Ansicht, dass Sie eine Liste von whoozit.Models.PictureModel-Elementen erwarten. Dann sucht deine Foreach nach whoozit.Models.Picture nicht PictureModel. Unten ist, wie ich normalerweise so etwas tun würde. Stellen Sie sicher, dass Ihre Liste, die Sie zu nummerieren versuchen, der richtige Typ ist. Wenn die Bildklasse aus einer Sammlung innerhalb des PictureModels stammt, stellen Sie sicher, dass Sie Model. Was auch immer in der foreach machen.
Versuchen Sie Folgendes:
%Vor%Tags und Links asp.net-mvc strong-typing html-helper